spring security oauth2第三方登录实验
时间: 2023-05-14 20:07:23 浏览: 90
可以使用Spring Security OAuth2来实现第三方登录,具体步骤如下:
1. 添加依赖
在pom.xml中添加以下依赖:
```
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>
```
2. 配置OAuth2客户端
在application.yml中添加以下配置:
```
spring:
security:
oauth2:
client:
registration:
github:
client-id: <your-client-id>
client-secret: <your-client-secret>
scope: read:user
redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
provider:
github:
authorization-uri: https://github.com/login/oauth/authorize
token-uri: https://github.com/login/oauth/access_token
user-info-uri: https://api.github.com/user
user-name-attribute: login
```
其中,`client-id`和`client-secret`是你在GitHub上注册OAuth2应用时获得的。
3. 创建登录页面
创建一个登录页面,让用户选择使用哪个第三方登录。
4. 创建回调页面
创建一个回调页面,用于接收第三方登录成功后的回调请求。
5. 创建用户信息服务
创建一个用户信息服务,用于将第三方登录成功后获取到的用户信息保存到数据库中。
6. 配置Spring Security
在SecurityConfig中配置OAuth2登录和授权的相关信息:
```
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private OAuth2UserService<OAuth2UserRequest, OAuth2User> oAuth2UserService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login/**", "/oauth2/**").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login()
.loginPage("/login")
.userInfoEndpoint()
.userService(oAuth2UserService)
.and()
.defaultSuccessURL("/home")
.and()
.logout()
.logoutSuccessUrl("/")
.permitAll();
}
}
```
其中,`oAuth2UserService`是一个实现了`OAuth2UserService`接口的类,用于将第三方登录成功后获取到的用户信息保存到数据库中。
7. 测试
启动应用程序并访问登录页面,选择使用GitHub登录,然后输入你的GitHub用户名和密码,如果一切正常,你将被重定向到回调页面,并看到你的GitHub用户名。