zoukankan      html  css  js  c++  java
  • Spring Security 与 OAuth2(相关类参考)

    AuthorizationServerConfigurerAdapter

    • 通过继承该类并重写 configure 方法来配置授权服务器:
      • configure(AuthorizationServerEndpointsConfigurer endpoints):配置授权服务器端点,如令牌存储,令牌自定义,用户批准和授权类型,不包括端点安全配置
      • configure(AuthorizationServerSecurityConfigurer oauthServer):配置授权服务器端点的安全
      • configure(ClientDetailsServiceConfigurer clients):配置 ClientDetailsService 也就是客户端属性信息

    ResourceServerConfigurerAdapter

    • 通过继承该类并重写 configure 方法来配置资源服务器:
      • configure(org.springframework.security.config.annotation.web.builders.HttpSecurity http):配置资源的访问规则
      • configure(ResourceServerSecurityConfigurer resources):添加资源服务器特定的属性(如资源ID),默认值适用于很多情况,但至少需要修改下ID

    TokenStore

    • OAuth2 Token(令牌)持久化接口,用于定义 Token 如何存储,它有几个实现类:
      • InMemoryTokenStore:实现了在内存中存储令牌
      • JdbcTokenStore:通过 JDBC 方式存储令牌
      • JwtTokenStore:通过 JWT 方式存储令牌

    TokenEnhancer

    • 可用于自定义令牌策略,在令牌被 AuthorizationServerTokenServices 的实现存储之前增强令牌的策略,它有两个实现类:
      • JwtAccessTokenConverter:用于令牌 JWT 编码与解码
      • TokenEnhancerChain:一个令牌链,可以存放多个令牌,并循环的遍历令牌并将结果传递给下一个令牌

    TokenEndpoint

    • 该类根据 OAuth2 规范实现了令牌端点,客户端必须使用 Spring Security 身份验证来访问此端点,并从身份验证令牌客户端 ID,根据 OAuth2 规范,使用标准的 Spring Security 的 HTTP Basic 验证

    AuthorizationServerTokenServices

    • 该接口定义了一些操作可以对令牌进行一些管理,包含了三个方法声明:
      • createAccessToken(OAuth2Authentication authentication):从 OAuth2Authentication 对象中创建令牌
      • getAccessToken(OAuth2Authentication authentication):从 OAuth2Authentication 对象中获取令牌
      • refreshAccessToken(String refreshToken, TokenRequest tokenRequest):刷新令牌

    OAuth2AuthenticationDetails

    • HTTP 请求中资源所有者(用户)相关的 OAuth2 Authentication(身份验证)信息,它可通过 SecurityContext 获得
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    Object details = authentication.getDetails();
    
    • 它有几个方法:
      • getDecodedDetails():
      • getRemoteAddress():Authentication(身份验证)请求的 TCP/IP 地址
      • getSessionId():Authentication(身份验证)请求的 SessionID
      • getTokenValue():请求中包含的的令牌信息(通常在请求头中)
      • setDecodedDetails(Object decodedDetails):设置令牌
      • getDecodedDetails():解码请求中包含的令牌
      • getTokenType():获取 Token 类型,例如 Bearer

    ResourceServerTokenServices

    • 令牌业务类接口,它定义了两个方法:
      • loadAuthentication(String accessToken):加载 Authentication 验证信息
      • readAccessToken(String accessToken):读取令牌
    • 它有两个实现类:
      • DefaultTokenServices:详情看下面
      • RemoteTokenServices:通过访问授权服务器 /check_token 端点来获取、解析令牌,如果端点返回 400 相应则表示该令牌无效

    DefaultTokenServices

    • 该类主要实现了 ResourceServerTokenServices、AuthorizationServerTokenServices、ConsumerTokenServices 三个接口
    • 它包含了令牌业务的实现,如创建令牌、读取令牌、刷新令牌、撤销令牌、获取客户端ID。默认的当尝试创建一个令牌时,是使用 UUID 随机值进行填充的
    • 除了持久化令牌是委托一个 TokenStore 接口实现以外,这个类几乎帮你做了所有事情

    AuthorizationEndpoint

    • 该类根据 OAuth2 规范实现了授权端点,如果授权类型是授权码模式,则处理用户批准,令牌是从令牌端点获得的,默认是支持除了密码授权外所有标准授权类型
    • 它使用 AuthorizationServerEndpointsConfigurer 该类实例对象来进行配置,它可配置以下属性:
      • authenticationManager:认证管理器,当你选择了资源所有者密码(password)授权类型的时候,请设置这个属性注入一个 AuthenticationManager 对象
      • userDetailsService:可定义自己的 UserDetailsService 接口实现
      • authorizationCodeServices:用来设置收取码服务的(即 AuthorizationCodeServices 的实例对象),主要用于 "authorization_code" 授权码类型模式
      • implicitGrantService:这个属性用于设置隐式授权模式,用来管理隐式授权模式的状态
      • tokenGranter:完全自定义授权服务实现(TokenGranter 接口实现),只有当标准的四种授权模式已无法满足需求时

    OAuth2AuthenticationProcessingFilter

    • OAuth2 受保护资源的预设认证过滤器,从请求中提取 OAuth2 令牌,并将令牌传入 OAuth2Authentication,(如果与OAuth2AuthenticationManager结合使用)传入Spring Security上下文

    ClientDetailsService

    • 提供有关 OAuth2 客户端的详细信息的服务,该接口仅声明了一个方法:
      • loadClientByClientId(String clientId):通过客户端名字加载客户端详情
    • 它有两个实现类:
      • InMemoryClientDetailsService:客户端详细信息服务的内存实现
      • JdbcClientDetailsService:客户端详细信息服务的 JDBC 实现,它会从数据库中读取客户端详情

    AccessTokenConverter

    • 令牌服务实现的转换器接口,用于将令牌数据存储在令牌中
    • 它有两个实现类:
      • JwtAccessTokenConverter:用于令牌 JWT 编码与解码
      • DefaultAccessTokenConverter:AccessTokenConverter 的默认实现

    OAuth2AccessToken

    • OAuth2 Token(令牌)实体类,包含了令牌、类型(Bearer)、失效时间等

    OAuth2ClientProperties

    • OAuth2 Client(客户端)属性配置实体类

    OAuth2ProtectedResourceDetails

    • OAuth2 受保护资源(资源服务器)的配置实体类

    AuthorizationServerProperties

    • OAuth2 Authentication(授权服务器)属性配置实体类

    ResourceServerProperties

    • OAuth2 为资源服务器配置提供了 ResourceServerProperties 类,该类会读取配置文件中对资源服务器得配置信息(如授权服务器公钥访问地址)

    ClientDetails

    • 客户端详情接口,声明了获取客户端详情所需的一些方法,比如获取访问令牌失效时间、获取客户端权限、获取客户端 ID、获取客户端访问范围等方法

    AuthorizationServerProperties

    • OAuth2授权服务器的配置属性




  • 相关阅读:
    牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式
    6.3 省选模拟赛 Decompose 动态dp 树链剖分 set
    AtCoder Grand Contest 044 A Pay to Win 贪心
    5.29 省选模拟赛 树的染色 dp 最优性优化
    luogu P6097 子集卷积 FST FWT
    CF724C Ray Tracing 扩展欧几里得 平面展开
    5.30 省选模拟赛 方格操作 扫描线 特殊性质
    5.29 省选模拟赛 波波老师 SAM 线段树 单调队列 并查集
    Spring main方法中怎么调用Dao层和Service层的方法
    Bug -- WebService报错(两个类具有相同的 XML 类型名称 "{http://webService.com/}getPriceResponse"。请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称。)
  • 原文地址:https://www.cnblogs.com/grimm/p/13518190.html
Copyright © 2011-2022 走看看