使用Spring Social开发第三方登录_OAuth协议简介

OAuth协议要解决的问题:

用户名密码:

通过Token令牌解决。

OAuth协议中的各种角色:

服务提供者Provider:如微信

资源所有者Resource Owner:用户

第三方应用Client

认证服务器Authorization Server:产生令牌

资源服务器Resource Server:如用户自拍数据,验证令牌

OAuth协议运行流程:


第二步有四种授权模式:


授权码模式:


用户同意授权的动作在认证服务器上完成的;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用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用户名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值