Spring Authorization Server 0.2.3发布,放出联合身份DEMO

智数逐影人
• 阅读 2843

很快啊Spring Authorization Server又发新版本了,现在的版本是0.2.3。本次都有什么改动呢?我们来了解一下。

0.2.3版本特性

本次更新的新特性不少。

为公开客户端提供默认的设置

根据RFC6479,包含授权码(authorization_code)授权并且客户端认证方式ClientAuthenticationMethod只有一种,为none的客户端都是公开(Public)客户端,反之就是机密(Confidential)客户端。

0.2.3中,为公开的客户端提供了客户端默认配置ClientSettings

            if (this.clientSettings == null) {
                ClientSettings.Builder builder = ClientSettings.builder();
                if (isPublicClientType()) {
                    // @formatter:off
                    builder
                            .requireProofKey(true)
                            .requireAuthorizationConsent(true);
                    // @formatter:on
                }
                this.clientSettings = builder.build();
            }

这里多说点,公开客户端现在不单纯是authorization_code模式授权,必须加上PKCE

OAuth2ClientAuthenticationProvider被细分

Spring Authorization Server目前支持的客户端认证方式有:

  • client_secret_basic
  • client_secret_post
  • client_secret_jwt
  • private_key_jwt
  • none

之前由 OAuth2ClientAuthenticationProvider 一手包办,现在职责分离了。

JwtClientAssertionAuthenticationProvider

负责private_key_jwtclient_secret_jwt,具体细节请关注我的专栏
目前胖哥已经实现了完整的private_key_jwt认证的DEMO

ClientSecretAuthenticationProvider

默认的client_secret_basicclient_secret_post由它负责。

PublicClientAuthenticationProvider

处理上面所说的公开客户端的认证方式。

InMemoryOAuth2AuthorizationService优化

主要优化了对未完成授权信息OAuth2Authorization存储的淘汰策略,如果内存中存储的数量超过100,会把最老存储的信息淘汰掉。

增加了联合身份的DEMO

Federated Identity Pattern (联合身份模式)举个例子,你同时对接了好几个身份提供商(IDP),你都需要跳不同的授权服务器页面并输入对应的密码,现在这些IDP可以都放在Spring Authorization Server下面,委托给Spring Authorization Server来处理身份认证授权。这样你不用跳来跳去了,只需要维护Spring Authorization ServerIDP的关系了。

请注意该功能不是Spring Authorization Server本身自带的功能。

OAuth2TokenGenerator

0.2.3抽象了OAuth2Token的的生成模型:

@FunctionalInterface
public interface OAuth2TokenGenerator<T extends OAuth2Token> {
 
    @Nullable
    T generate(OAuth2TokenContext context);

}

OAuth2授权码使用统一的Token生成模型

授权码授权中的code的生成现在也需要由OAuth2TokenGenerator实现,实现类为OAuth2AuthorizationCodeGenerator

OAuth2刷新Token使用统一的Token生成模型

OAuth2刷新令牌 OAuth2RefreshToken现在同样需要由OAuth2TokenGenerator实现。

JWT的生成使用统一的模型

现在JWT的生成也由OAuth2TokenGenerator来实现,具体的实现类为JwtGenerator

支持不透明令牌

现在你可以自定义一个OAuth2TokenGenerator并注入到Spring IoC来实现自定义的令牌生成逻辑,这意味着不透明令牌也可以通过自定义来实现。

令牌自省过滤器配置现在可以自定义

0.2.3版本之前令牌自省的配置由 OAuth2AuthorizationServerConfigurer 负责,现在它由独立的配置类OAuth2TokenIntrospectionEndpointConfigurer负责。

依赖升级

0.2.3也对部分的依赖进行了升级,具体为:

  • 更新到Reactor 2020.0.16
  • 更新到Spring Security 5.5.5
  • 更新到Spring Framework 5.3.16
  • 更新到Spring Boot 2.5.10
胖哥也将跟进变化,对依赖进行逐步升级。

关注公众号:Felordcn 获取更多资讯

个人博客:https://felord.cn

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
kenx kenx
4年前
Java8 新特性 Stream Api 之集合遍历
前言随着java版本的不断更新迭代,java开发也可以变得甜甜的,最新版本都到java11了,但是后面版本也是不在提供商用支持,需要收费,但是java8依然是持续免费更新使用的,后面版本也更新很快眼花缭乱,所以稳定使用还是用java8把既可以体验到新功能,又不需要,烦恼升级带来的bug新特性比较新的的特性就是流Stream,和lambda表达式图上
Wesley13 Wesley13
3年前
Spring Authorization Server 全新授权服务器整合使用
前言SpringAuthorizationServer是Spring团队最新开发适配OAuth协议的授权服务器项目,旨在替代原有的SpringSecurityOAuth经过半年的开发和孵化,目前已经发布了0.1.0版本,初步支持授权码、客户端、刷新、注销等OAuth协议本文
Stella981 Stella981
3年前
Kerberos无约束委派的攻击和防御
 0x00前言简介当ActiveDirectory首次与Windows2000Server一起发布时,Microsoft就提供了一种简单的机制来支持用户通过Kerberos对Web服务器进行身份验证并需要授权用户更新后端数据库服务器上的记录的方案。这通常被称为Kerberosdoublehopissue(双跃点问题),
Wesley13 Wesley13
3年前
Java 13 新特性及实战案例
近期Java界好消息频传。先是Java13发布,接着Eclipse也发布了新版本表示支持新版本的Java特性。本文介绍了Java13的新特性并展示了相关的示例。2019年9月17日,Java13正式发布。特性如下。Java13新特性此版本带来了以下几大新特性:JEP350,Dy
Stella981 Stella981
3年前
Angular5.1新版本以及更多可用功能
Angular5.1版本发布了。这是一个小版本,包含几个小的功能和bug修复。我们也发布了AngularCli的1.6版本,以及AngularMaterial的第一个稳定版本。!(https://oscimg.oschina.net/oscnet/f8f7d922eedf43009f53ebe995e0ce54.png)新特性
Stella981 Stella981
3年前
ReactNative0.62更新内容
在今年的3月26日,FaceBook正式发布了ReactNative最新版本,版本号为0.62。作为一款优秀的开源跨平台开发框架,和对手Google开发的Flutter相比,近一年来的发展可谓进步缓慢,至今尚未发布1.0的正式版本。今天我们来聊一聊最新版本的更新内容。调试工具Flipper本次更新默认支持了Facebook自己研发的跨平台
Wesley13 Wesley13
3年前
C# 8.0的三个令人兴奋的新特性
!(http://images2017.cnblogs.com/blog/139239/201710/13923920171031103730980602079392.png)C语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新。同时,C每个版本的发布都与同时期的VisualStudio
Stella981 Stella981
3年前
ReactNative0.62更新内容抢先看
在今年的3月26日,FaceBook正式发布了ReactNative最新版本,版本号为0.62。作为一款优秀的开源跨平台开发框架,和对手Google开发的Flutter相比,近一年来的发展可谓进步缓慢,至今尚未发布1.0的正式版本。今天我们来聊一聊最新版本的更新内容。调试工具Flipper本次更新默认支持了Facebook自己研发的跨平台调
Wesley13 Wesley13
3年前
Java14来了!Switch竟如此简单?Lombok也不需要了?来用Idea搭建Java14吧!
Java14在2020.3.17日发布正式版了,但现在很多公司还在使用Java7或Java8,每当看到Java又发布新版本心里就慌得一匹。不过此版本并不是LTS(长期支持版)版本,所以不要慌,我们先来了解一下好了,等LTS版本发布后再用也不迟。版本说明现在Java的发布节奏是每年发布两个GA(Gene
Stella981 Stella981
3年前
Egret 5.3 正式发布,为重度小游戏开发带来新技能
各位开发者好,白鹭引擎团队今天发布2020年最大的一次更新:Egret5.3版本。由于白鹭引擎团队在2019年已经针对部分开发者提供过内部的5.3.x版本,所以本次更新的版本号为5.3.5。根据白鹭引擎2018年以来的规划,版本号第二位为奇数位表示这个版本是抢先体验版而非稳定版,因此我们将在Egret5.3系列版本中相对激进的引入新特性,但是