SpringSecurity之OAuth2

最基础的OAuth2服务商

简介

在这里插入图片描述

标准的Oauth服务提供商

  • login模块切换至APP依赖

  • 部分配置切换
    BrowserSecurityConfig中注入的passwordEncoder转至security-core项目,否则会报错bean找不到(在配置项中注入即可,本文转移至SecurityPropertiesConfig配置项config中)
    在这里插入图片描述
    将成功失败处理器拷贝至APP项目中(处理模式不一样,无法抽象到core项目中)
    在这里插入图片描述

  • 实现认证服务器

    package com.cong.security.app.authentication;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
    
    /**
     * @author single-聪
     * @EnableAuthorizationServer注解实现了认证服务器
     */
    @Configuration
    @EnableAuthorizationServer
    public class MyAuthorizationServerConfig {
    
    }
    

    授权码模式基本不会使用(自己的项目中用户名密码都有,不需要授权码)
    用户名密码模式:
    在这里插入图片描述
    注意请求头中携带Authentication参数:
    在这里插入图片描述
    此时即使重复调用返回的access_token也是同一个值,但是有效期在减少。

  • 实现资源服务器

    package com.cong.security.app.authentication;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
    
    @Configuration
    @EnableResourceServer
    public class MyResourceServerConfig {
    
    }
    

    此时拿到token之后在请求头中携带token即可访问服务提供的接口。

Oauth流程解读

在这里插入图片描述
绿色代表实体类、蓝色代表接口
解释:

  • TokenEndpoint
    入口点,可以当成一个controller,用来处理获取令牌(/oauth/token)的请求
  • ClientDetailsService
    类似于UserDetailsService,用来读取第三方应用的信息,根据client-id读取相应的ClientDetails
  • ClientDetails
    封装第三方应用的信息
  • TokenRequest
    分装请求中其他参数的信息,ClientDetails会放到TokenRequest
  • TokenGranter
    TokenRequest调用,根据请求传上来的grant_type选择一个实现执行令牌生成的逻辑,会产生OAuth2Request以及Authentication
  • OAuth2Request
    相当于ClientDetails以及TokenRequest的整合
  • Authentication
    当前授权用户的信息,根据UserDetailsService的实现读取出来的信息
  • OAuth2Authentication
    OAuth2Request以及Authentication整合而成,包含哪一个第三方应用请求哪一个用户授权,授权模式是什么,授权请求的参数是什么,OAuth2Authentication会传给AuthorizationServerTokenServices接口的实现
  • AuthorizationServerTokenServices
    认证服务器令牌服务,拿到OAuth2Authentication所有信息之后,会生成一个OAuth2AccessToken令牌
  • TokenStore
    令牌存取
  • TokenEnhancer
    令牌增强器,可以在令牌中加一些其他的东西
  • OAuth2AccessToken
    令牌信息
发布了43 篇原创文章 · 获赞 25 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/single_cong/article/details/104212717