【SpringSecurityOAuth2】源码分析@EnableOAuth2Sso在Spring Security OAuth2 SSO单点登录场景下的作用...

本文详细分析了Spring Security OAuth2中的@EnableOAuth2Sso注解在SSO单点登录场景下的作用。首先介绍了@EnableOAuth2Sso的基本概念,然后通过源码解析了它如何添加配置、启用OAuth2 SSO,以及如何自定义和默认配置。文章阐述了OAuth2 SSO的核心配置SsoSecurityConfigurer,以及如何创建和管理过滤器,以实现OAuth2的授权码流程,完成用户认证和登录状态的建立。
摘要由CSDN通过智能技术生成


一、从Spring Security OAuth2官方文档了解@EnableOAuth2Sso作用

spring-security-oauth2-boot 2.2.0.RELEASE Single Sign On文档地址

spring-security-oauth2-boot-2.2.0.RELEASE-single_sign_on-01

先从第一段介绍开始,加上自己的分析:

  • @EnableOAuth2Sso是使用在OAuth2 Client角色上的注解,从其包路径也可以看出org.springframework.boot.autoconfigure.security.oauth2.client

  • @EnableOAuth2Sso单点登录的原理简单来说就是:标注有@EnableOAuth2Sso的OAuth2 Client应用在通过某种OAuth2授权流程获取访问令牌后(一般是授权码流程),通过访问令牌访问userDetails用户明细这个受保护资源服务,获取用户信息后,将用户信息转换为Spring Security上下文中的认证后凭证Authentication,从而完成标注有@EnableOAuth2Sso的OAuth2 Client应用自身的登录认证的过程。整个过程是基于OAuth2的SSO单点登录

  • SSO流程中需要访问的用户信息资源地址,可以通过security.oauth2.resource.userInfoUri配置指定
  • 最后的通过访问令牌访问受保护资源后,在当前服务创建认证后凭证Authentication(登录态)也可以不通过访问userInfoUri实现,userInfoUri端点是需要用户自己实现。默认情况security.oauth2.resource.preferTokenInfo=true ,获取用户信息使用的是授权服务器的/check_token端点,即TokenInfo,根据访问令牌找到在授权服务器关联的授予这个访问令牌的用户信息
  • Spring Security OAuth2 SSO整个流程实际上是 OAuth2 Client是一个运行在Server上的Webapp的典型场景,很适合使用授权码流程


spring-security-oauth2-boot-2.2.0.RELEASE-single_sign_on-02

第二段主要讲了下如何使用@EnableOAuth2Sso

  • 使用@EnableOAuth2Sso的OAuth2 Client应用可以使用/login端点用于触发基于OAuth2的SSO流程,这个入口地址也可以通过security.oauth2.sso.login-path来修改

  • 如果针对一些安全访问规则有自己的定制,说白了就是自己实现了Spring Security的WebSecurityConfigure

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值