springsecurity 集成 oauth2

这篇博客详细介绍了如何将SpringSecurity与OAuth2结合,包括oAuth2的基本概念、与单点登录的区别、四种授权模式,以及具体的配置步骤,如创建认证模块和资源模块,最后进行了测试演示。
摘要由CSDN通过智能技术生成

什么是oAuth2

简单来说,就是让一个系统可以直接访问另一个系统,通过授权码。

与单点登录的区别

什么是单点登录: 用户成功登录A系统,需要访问B系统时,可以不用输入用户名密码进行认证就可以直接访问B系统的资源。

什么是oauth2: A系统征求用户的同意后直接访问B系统,用户不需要登录也不需要访问B系统。

四种授权模式

1)授权码模式(oauth2 中最安全最完善的一种模式,应用场景最广泛)
A系统要访问B系统的资源,A系统询问用户是否同意其访问B系统的资源。如果用户同意,则B系统生成授权码给A,A系统带着授权码向B系统发送请求,并获取到令牌 token 和更新令牌 refresh token。(前提:用户有访问B系统的权限)

2)简化模式
跟授权码模式类似,去掉了授权码。直接获得B系统给的 token ,通过 token 访问B系统

3)密码模式
用户直接把自己访问B系统的账号密码告诉 A系统,A系统拿着用户的密码去访问B系统。

4)客户端模式
A系统直接脱离用户,以自己的身份去B系统获取 token,可以说完全是 AB 系统内部的交互,与用户无关了。该模式不太属于 oauth2 范畴

OAuth2表结构

oAuth2 自带有 7 张表

1)获取表结构地址: https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/test/resources/schema.sql

注意:这里的 sql 默认是 HSQLDB 的,我们用 mysql 的可以把 LONGVARBINARY 数据类型改成 BLOB
oauth_client_details 是核心表,后面测试时只要看这张表即可

表结构字段说明可参考博客 https://blog.csdn.net/qq_34997906/article/details/89609297

在这里插入图片描述

创建父工程

本文只贴 配置类代码,其他具体代码跟上一篇博客类似,具体可查看文末源码

注意 spring cloud 的版本匹配,本例用的 springboot2.3,可参考 https://start.spring.io/actuator/info
在这里插入图片描述

创建认证模块

即 B 系统的 oauth2 认证模块,B系统需要检测用户是否登录,用户成功登录了B系统才能授权给A系统去访问

@Configuration
@EnableWebSecurity
public class SpringsecurityConfig extends WebSecurityConfigurerAdapter {
   
    @Autowired
    private SysUserService userService;

    //配置加密
    @Bean
    public PasswordEncoder passwordEncoder() {
   
        return new BCryptPasswordEncoder(); //spring security 内置加密算法
    }

    //认证用户的来源
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
   
        auth.userDetailsService(userService).passwordEncoder(passwordEncoder());
    }

    //Spring Security配置
    public void configure(HttpSecurity hs) throws Exception {
   
        hs.authori
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值