当前位置: 首页 > 科技观察

再见,SpringSecurityOAuth!!

时间:2023-03-14 12:38:57 科技观察

新品官宣近日,Spring正式上线了《Spring Authorization Server》项目:本次的《Spring Authorization Server》项目正式上线,去掉了之前的体验状态。此举与版本0.2.0的发布同时进行,这也是第一个正式支持的生产就绪版本。项目前辈先看一个2019年SpringSecurityOAuth2.0路线图更新说明:SpringSecurityOAuth2.0RoadmapUpdatehttps://spring.io/blog/2019/11/14/spring-security-oauth-2-0-roadmap-update大致意思是SpringSecurity项目支持授权服务器不是一个合适的选择,因为授权服务器需要一个库来构建,而SpringSecurity作为一个框架,不适合参与构建库或产品.网上有大量商业和开源的授权服务器可供选择,所以SpringSecurity团队决定不提供对授权服务器的支持。.另外,2018年初,Spring宣布SpringSecurityOAuth项目正式进入维护模式,并计划在近期完全停止支持。我们进入SpringSecurityOAuth项目的主页:https://projects.spring.io/spring-security-oauth/docs/oauth2.html可以看到弃用通知:TheSpringSecurityOAuthprojecthasbeendeprecated,latestOAuth2.0支持由SpringSecurity项目提供,有关更多详细信息,请参阅OAuth2.0迁移指南:https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Migration-Guide即使是SpringSecurityOAuth项目被SpringSecurity项目接管,但SpringSecurity仍然不再包含对授权服务器的支持。您可以使用商业、开源或构建您自己的。反正Spring已经不提供了,纯粹是一个框架。.项目背景Spring放弃授权服务器后,来自社区的反馈、博客、Gitter中的讨论、GitHub中的评论都得到了热烈的反响。他们都强烈要求Spring提供对授权服务器的支持。Spring可能顶不住压力,或者真的意识到Spring生态真的需要一个授权服务器。.于是在2020/04/15,Spring团队宣布了一个新的《Spring Authorization Server》项目,继续为Spring授权服务器提供支持。https://spring.io/blog/2020/04/15/announcing-the-spring-authorization-server这是一个由SpringSecurity团队主导的社区驱动项目,专注于为Spring社区提供授权服务器支持。该项目还开始取代SpringSecurityOAuth提供的对AuthorizationServer的支持。完整功能列表:TheOAuth2.0AuthorizationFrameworkAuthorizationCodeGrantHTTPBasicHTTPPOSTAuthorizationCodeClientCredentialsRefreshTokenAuthorizationGrantClientAuthenticationUserConsentProofKeyforCodeExchangebyOAuthPublicClients(PKCE)OAuth2.0TokenRevocationOAuth2.0TokenIntrospectionOAuth2.0授权服务器元数据JSONWebToken(JWT)JSONWebSignature(JWS)JSONWebKey(JWK)OpenIDConnectCore1.0授权代码流OpenIDConnectDiscovery1.0ProviderConfigurationEndpointOpenIDConnectDynamicClientRegistration1.0ClientRegistrationEndpoint即将到来的功能:JSONOAuth2.0客户端身份验证和授权的Web令牌(JWT)配置文件授予OAuth2.0双向TLS客户端身份验证和证书绑定访问令牌操作enIDConnectCore1.0UserInfoEndpointOAuth2.0TokenExchange这部分就不介绍了。后续栈长有时间会进行详细的理论+实战,关注公众号Java技术栈,为什么需要授权服务器?这个你需要了解OAuth2.0协议,它定义了四种角色:Client:客户端,即请求授权用户资源的第三方应用;ResourceOwner:资源拥有者,授权Client访问其账户的用户;Authorizationserver:授权服务器,即服务提供者用来处理用户授权和认证的服务器;Resourceserver:资源服务器,即服务商为用户提供受保护资源的服务器;另外,OAuth2.0支持四种运行模式:授权码模式隐式授权模式PasswordMode客户端模式,但一般我们使用较多的是授权码模式。授权码方式的操作流程如下:流程说明:1.客户端请求用户授权;2、用户同意授权客户端并返回授权码;3、客户端通过授权码向认证服务器申请token;4、认证服务器对客户端进行认证,返回token;5、客户端使用token向资源服务器获取资源;6、资源服务器验证token,返回资源;如图流程所示,OAuth2授权码模式的运行流程是AuthorizationServer(授权服务器)不可或缺的。授权服务器用于授权认证,以及AccessToken(令牌)的颁发、管理和撤销。授权服务器可以与资源服务器在不同的服务器上,也可以是同一台服务器。综上所述,Spring于2020年4月正式宣布上线《Spring Authorization Server》项目,上线一年多。效率很高,团队的目标也很明确,就是让《Spring Authorization Server》项目最终成为Java平台。OAuth2授权服务器上事实上的标准框架。