天天看點

Spring Security OAuth停更探索Spring Authorization Server的革新

作者:玄明Hanko

#挑戰30天在頭條寫日記#

1、背景

Spring Security OAuth(spring-security-oauth2)停更

Spring Security OAuth停更探索Spring Authorization Server的革新
主要意思是:生命周期終止通知 Spring Security OAuth(spring-security-oauth2)項目已達到生命周期結束,不再由VMware,Inc.積極維護。 此項目已被Spring Security和Spring Authorization Server提供的OAuth2支援所取代。

那麼我們來分析一下這兩個項目。Spring Authorization Server是Spring Security OAuth的進化版本,Spring Security OAuth官方已經宣布“End of Life”了。Spring Security OAuth使用的是OAuth2.0标準而Spring Authorization Serve引入了對OAuth 2.1和OpenID Connect 1.0規範的支援,并提供了更多功能和改進。它提供了OAuth 2.1和OpenID Connect 1.0規範以及其他相關規範的實作。它是基于Spring Security建構的,為建構OpenID Connect 1.0身份提供者和OAuth2授權伺服器産品提供了安全、輕量級和可定制的基礎。

OAuth 2.1和OpenID Connect 1.0是用于身份驗證和授權的行業标準協定。它們被廣泛應用于各種應用程式和系統,以實作安全的使用者身份驗證和授權流程。Spring Authorization Server提供了一個友善的方式來實作這些協定,使開發人員能夠快速建構安全可靠的身份驗證和授權系統。

2、差別

Spring Security OAuth停更探索Spring Authorization Server的革新

2.1、協定差別

  • Spring Security OAuth

Spring Security OAuth(spring-security-oauth2)是一個基于Spring Security的擴充,用于提供OAuth(開放授權)協定的實作。它提供了OAuth 2.0的用戶端和服務端支援,使開發人員可以輕松地将OAuth內建到他們的應用程式中。

https://spring.io/projects/spring-security-oauth

  • Spring Authorization Server

Spring Authorization Server(spring-authorization-server)是一個架構,提供OAuth 2.1和OpenID Connect 1.0規範以及其他相關規範的實作。它建構在Spring Security之上,為建構OpenID Connect 1.0 Identity Providers和OAuth2 Authorization Server産品提供了一個安全,輕量級和可定制的基礎。

https://spring.io/projects/spring-authorization-serverspring.io/projects/spring-authorization-server

補充知識點一:OAuth 2.0和OAuth 2.1差別

OAuth 2.0和OAuth 2.1是OAuth協定的兩個不同版本,它們在以下方面有一些差別:

  1. 版本号:OAuth 2.0是最早釋出的版本,而OAuth 2.1是OAuth 2.0的後續版本。
  2. RFC規範:OAuth 2.0的規範定義在RFC 6749中,而OAuth 2.1的規範定義在RFC 8628中。OAuth 2.1是對OAuth 2.0規範的細化和改進。
  3. 安全性增強:OAuth 2.1在安全性方面引入了一些增強功能,以強化協定的安全性。這些增強功能包括:禁止使用基于浏覽器的應用程式進行授權碼授權流程(Authorization Code Flow with Proof Key for Code Exchange, PKCE),推薦使用強密碼雜湊演算法等。
  4. 便捷性:OAuth 2.1的目标之一是簡化開發者對OAuth 2.0的實作和使用。它提供了更具可讀性和易用性的規範,以減少實作和使用過程中的困惑和錯誤。
  5. 向後相容性:OAuth 2.1被設計為向後相容OAuth 2.0,這意味着現有的OAuth 2.0應用程式可以平滑地遷移到OAuth 2.1,而無需進行重大的更改。

需要注意的是,OAuth 2.1并非OAuth協定的完全新版本,而是在OAuth 2.0基礎上的改進和細化。它旨在提供更好的安全性和便捷性,并解決了一些在OAuth 2.0中發現的問題。

在實際應用中,您應該根據具體需求和支援情況選擇OAuth的版本。對于新的項目,建議考慮使用OAuth 2.1,以獲得更好的安全性和簡化的開發體驗。對于現有的OAuth 2.0應用程式,可以考慮逐漸遷移到OAuth 2.1以利用其優勢和增強功能。

補充知識點二:OpenID Connect 1.0

OpenID Connect 1.0 是建立在 OAuth 2.0 協定之上的身份驗證協定,它擴充了 OAuth 2.0 的功能,為用戶端應用程式提供了更豐富的使用者身份驗證和屬性資訊擷取能力。以下是 OpenID Connect 1.0 與 OAuth 2.0 的一些差別:

  1. 身份驗證層:OAuth 2.0 主要關注授權方面,而 OpenID Connect 1.0 在 OAuth 2.0 的基礎上添加了一個身份驗證層,使得用戶端應用程式可以直接擷取使用者的身份資訊。
  2. ID Token:OpenID Connect 1.0 引入了 ID Token 的概念,它是一個基于 JSON Web Token (JWT) 的資料結構,用于傳遞有關使用者身份的資訊。ID Token 包含有關使用者的基本配置資訊,如使用者辨別符、姓名、電子郵件位址等。OAuth 2.0 不包含類似的标準化方式來傳遞使用者身份資訊。
  3. 使用者資訊端點:OpenID Connect 1.0 定義了一個使用者資訊端點,用戶端應用程式可以使用該端點來擷取使用者的詳細配置資訊。OAuth 2.0 并沒有定義類似的端點。
  4. 标準化:OpenID Connect 1.0 是一項标準化的協定,規範了身份驗證和使用者資訊擷取的流程和資料格式。它定義了一組規範和約定,使得不同的身份提供商和用戶端應用程式可以在遵循同樣的标準下進行內建。OAuth 2.0 雖然也是一個标準化協定,但它主要關注授權方面,沒有像 OpenID Connect 1.0 那樣具體定義身份驗證和使用者資訊擷取的流程。

綜上所述,OpenID Connect 1.0 是在 OAuth 2.0 的基礎上增加了身份驗證層和使用者資訊擷取功能的協定。它通過引入 ID Token 和使用者資訊端點等機制,為用戶端應用程式提供了更豐富的使用者身份驗證和屬性資訊擷取能力。

2.2、認證模式差別

  • Spring Security OAuth

1)授權碼模式:authorization_code

2)簡化模式:implicit

3)用戶端模式:client_credentials

4)密碼模式:password

  • Spring Authorization Server
Spring Security OAuth停更探索Spring Authorization Server的革新

可以看到spring authorization server中password模式已經标記為過時了。另外多了jwt-bearer和device_code模式。

Spring Security OAuth停更探索Spring Authorization Server的革新
authorizationGrantTypes:用戶端可以使用的授權授予類型。支援的值包括authorization_code、client_credentials、refresh_token和urn:ietf:params:oauth:grant-type:device_code。

密碼模式已經被标記為過時了,官方推薦使用 JWT-Bearer Token 或 Device Code Flow 模式。

JWT-Bearer Token 模式是一種基于 JSON Web Token(JWT)的認證方式,用戶端向伺服器發送一個包含使用者身份資訊的 JWT Token,伺服器通過驗證該 Token 來确認使用者的身份。這種模式的優點是簡單易用、安全性高、跨平台性強。

Device Code Flow 模式則是一種基于移動裝置的認證方式,用戶端向伺服器發送一個請求,要求擷取一個一次性的通路碼(Device Code),并在移動裝置上完成該碼的輸入以完成身份驗證。這種模式的優點是安全性高、易于內建和使用。

如果您正在使用 Spring Security 并且需要更改認證方式,請考慮使用 JWT-Bearer Token 或 Device Code Flow 模式。

https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Features-Matrix​github.com/spring-projects/spring-security/wiki/OAuth-2.0-Features-Matrix

Spring Security OAuth停更探索Spring Authorization Server的革新

========================================

如果文章對你有幫助,請不要忘記加個關注、點個贊!