Spring Security OAuth正式終止維護,已從官網下架

2022-06-02 18:01:02

Spring Security團隊正式宣佈Spring Security OAuth終止維護。

目前官網的主頁已經高亮提醒徹底停止維護。

舊的Spring Security OAuth專案終止到2.5.2.RELEASE版本,該專案將不會再進行任何的迭代,包括Bug修復,之前胖哥已經提醒該專案即將停止維護,有心的同學已經進行了遷移。

專案檔案和程式碼倉庫被移除

目前該專案的官方檔案已經正式從spring.io移除,檔案已經指向404,這是連檔案也沒有了。新增了OAuth2授權伺服器Spring Authorization Server的檔案。

不僅僅檔案被移除,連專案的倉庫也被遷移到Spring的過期專案倉庫spring-attic並被標記為read-only

Spring Security OAuthSpring Boot自動設定程式碼倉庫也一併被遷移,也就是說Spring Boot相關的自動設定也被移除。

從這種情況看來大約Spring Security OAuth的確是死了。難道就沒有可用的了嗎?當然不是。

遷移指南

這是胖哥總結的遷移指南。

依賴項檢查

那麼如何檢查你的專案是否用了舊的OAuth2設施呢?當然是對依賴進行檢查。以下清單中的依賴任何版本的都是過期的,都需要遷移:

        <dependency>		
                <groupId>org.springframework.security.oauth</groupId>
                <artifactId>spring-security-oauth-parent</artifactId>
        </dependency>
        <dependency>		
                <groupId>org.springframework.security.oauth</groupId>
                <artifactId>spring-security-oauth</artifactId>
        </dependency>
        <dependency>		
                <groupId>org.springframework.security.oauth</groupId>
                <artifactId>spring-security-oauth2</artifactId>
        </dependency>
        <dependency>
		 	<groupId>org.springframework.security</groupId>
	        <artifactId>spring-security-jwt</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security.oauth.boot</groupId>
            <artifactId>spring-security-oauth2-autoconfigure</artifactId>
        </dependency>

你可以通過mvn dependency:tree來檢查依賴樹是否整合了上述依賴項。

新的OAuth2替代方案

需要開發者掌握OAuth2.0OAuth2.1OIDC 1.0的一些知識。

Spring Security 5中整合了OAuth2 ClientResource Server兩個模組。如果有遷移的需要,建議遷移至最新的Spring Security 5.7.x,方便向Spring 6過渡。以Spring Boot為例,首先要整合Spring Security

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

這裡建議使用最新版本,目前是2.7。

整合OAuth2 Client依賴

OAuth2 Client依賴於Spring Security,不能單獨使用:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-oauth2-client</artifactId>
        </dependency>

整合Resource Server依賴

Resource Server同樣也依賴於Spring Security,不能單獨使用:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
        </dependency>

整合OAuth2授權伺服器依賴

目前Spring生態中的OAuth2授權伺服器是Spring Authorization Server,目前已具備生產就緒能力。在最新的0.3.0版本中,官方檔案正式在spring.io上線,需要你知道的是它必須在Java 11及以上版本才能使用。它也作為一個Spring Security子模組,不能單獨使用:

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-oauth2-authorization-server</artifactId>
            <version>0.3.0</version>
        </dependency>

透露一下,該專案的Spring Boot Starter也將在不久實裝。

學習指南

胖哥近幾個月一直在對新的OAuth2相關的進行系統化總結。因此你只要關注胖哥,總能獲得相關的知識和實戰乾貨分享。當然這裡胖哥也給出了一些參考的文獻:

專案參考程式碼DEMO:

總結

舊的Spring Security OAuth過期,其實也不必恐慌,除非你們在這一方面的架構需要繼續迭代。不過隨著新的方案面世,舊方案的可維護性會大大降低,有條件的還是要遷移一下的。Spring Cloud也將會在未來某個時間點做出一些調整以適應新的架構。請持續關注,後面會及時帶來相關的訊息。

關注公眾號:Felordcn 獲取更多資訊

個人部落格:https://felord.cn