其他分享
首页 > 其他分享> > 拥抱Spring全新OAuth解决方案

拥抱Spring全新OAuth解决方案

作者:互联网

以下全文 Spring Authorization Server 简称为: SAS

背景

迁移过程

本文以PIG 微服务开发平台为演示,适用于 Spring Security OAuth 2.3 <-> 2.5 的认证中心迁移

① Java 1.8 支持

目前最新的 SAS 0.3 基于 Java 11 构建,低版本 Java 无法使用

经过和 Spring Security 官方团队的沟通 0.3.1 将继续兼容 Java 1.8

我们联合 springboot 中文社区编译了适配 java 1.8 的版本坐标如下

  <dependency>
      <groupId>io.springboot.security</groupId>
      <artifactId>spring-security-oauth2-authorization-server</artifactId>
      <version>0.3.0</version>
  </dependency>

② 授权模式扩展

③ Redis 令牌存储

支持Redis存储 令牌

④ Token 输出格式化

ku4R4n7YD1f584KXj4k_3GP9o-HbdY-PDIIh-twPVJTmvHa5mLIoifaNhbBvFNBbse6_wAMcRoOWuVs9qeBWpxQ5zIFrF1A4g1Q7LhVAfH1vo9Uc7WL3SP3u82j0XU5x

默认实现

统一前缀::令牌类型::客户端ID::用户名::uuid
@Bean
public OAuth2TokenGenerator oAuth2TokenGenerator() {
  CustomeOAuth2AccessTokenGenerator accessTokenGenerator = new CustomeOAuth2AccessTokenGenerator();
  // 注入Token 增加关联用户信息
  accessTokenGenerator.setAccessTokenCustomizer(new CustomeOAuth2TokenCustomizer());
  return new DelegatingOAuth2TokenGenerator(accessTokenGenerator, new OAuth2RefreshTokenGenerator());
}

⑤ Token 输出增强

{
    "access_token": "xx",
    "refresh_token": "xx",
    "scope": "server",
    "token_type": "Bearer",
    "expires_in": 43199
}
{
    "sub": "admin",
    "clientId": "test",
    "access_token": "xx",
    "refresh_token": "xx",
    "license": "https://pig4cloud.com",
    "user_info": {
        "username": "admin",
        "accountNonExpired": true,
        "accountNonLocked": true,
        "credentialsNonExpired": true,
        "enabled": true,
        "id": 1,
        "deptId": 1,
        "phone": "17034642999",
        "name": "admin",
        "attributes": {}
    }
}

⑥ 授权码模式个性化

注入自定义confirm

基于授权码的开发平台

⑦ 资源服务器

默认的资源服务器自省模式

扩展资源服务器本地自省

- 优势: 1. 用户状态实时更新 2. 减少网络调用提升性能

标签:令牌,Java,Spring,Token,token,OAuth,new,拥抱
来源: https://www.cnblogs.com/leng-leng/p/16352311.html