Spring宣布舊的Spring Security OAuth徹底停止維護(hù),連文檔倉(cāng)庫(kù)都沒(méi)了
?Spring Security團(tuán)隊(duì)正式宣布Spring Security OAuth終止維護(hù),到達(dá)生命的終點(diǎn)。
目前官網(wǎng)的主頁(yè)已經(jīng)高亮提醒徹底停止維護(hù)。
舊的Spring Security OAuth項(xiàng)目終止到2.5.2.RELEASE版本,該項(xiàng)目將不會(huì)再進(jìn)行任何的迭代,包括Bug修復(fù),之前胖哥已經(jīng)提醒該項(xiàng)目即將停止維護(hù),有心的同學(xué)已經(jīng)進(jìn)行了遷移。
2020年就已經(jīng)宣布了EOL時(shí)間表
項(xiàng)目文檔和代碼倉(cāng)庫(kù)被移除
目前該項(xiàng)目的官方文檔已經(jīng)正式從spring.io移除,文檔已經(jīng)指向404,這連文檔也沒(méi)有了。新增了OAuth2授權(quán)服務(wù)器Spring Authorization Server的文檔。
不僅僅文檔被移除,連項(xiàng)目的倉(cāng)庫(kù)也被遷移到Spring的過(guò)期項(xiàng)目倉(cāng)庫(kù)spring-attic并被標(biāo)記為read-only。
Spring Security OAuth倉(cāng)庫(kù)已經(jīng)遷移
Spring Security OAuth的Spring Boot自動(dòng)配置代碼倉(cāng)庫(kù)也一并被遷移,也就是說(shuō)Spring Boot相關(guān)的自動(dòng)配置也被移除。
Spring Security OAuth2 Boot倉(cāng)庫(kù)被遷移
從這種情況看來(lái)大約Spring Security OAuth的確是死了。難道就沒(méi)有可用的了嗎?當(dāng)然不是。
遷移指南
這是胖哥總結(jié)的遷移指南。
依賴項(xiàng)檢查
那么如何檢查你的項(xiàng)目是否用了舊的OAuth2設(shè)施呢?當(dāng)然是對(duì)依賴進(jìn)行檢查。以下清單中的依賴任何版本的都是過(guò)期的,都需要遷移:
<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>
你可以通過(guò)mvn dependency:tree來(lái)檢查依賴樹(shù)是否集成了上述依賴項(xiàng)。
新的OAuth2替代方案
需要開(kāi)發(fā)者掌握OAuth2.0、OAuth2.1、OIDC 1.0的一些知識(shí)。
Spring Security 5中集成了OAuth2 Client和Resource Server兩個(gè)模塊。如果有遷移的需要,建議遷移至最新的Spring Security 5.7.x,方便向Spring 6過(guò)渡。以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,不能單獨(dú)使用:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
集成Resource Server依賴
Resource Server同樣也依賴于Spring Security,不能單獨(dú)使用:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
集成OAuth2授權(quán)服務(wù)器依賴
目前Spring生態(tài)中的OAuth2授權(quán)服務(wù)器是Spring Authorization Server,目前已具備生產(chǎn)就緒能力。在最新的0.3.0版本中,官方文檔正式在spring.io上線,需要你知道的是它必須在Java 11及以上版本才能使用。它也作為一個(gè)Spring Security子模塊,不能單獨(dú)使用:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-authorization-server</artifactId>
<version>0.3.0</version>
</dependency>
總結(jié)
舊的Spring Security OAuth過(guò)期,其實(shí)也不必恐慌,除非你們?cè)谶@一方面的架構(gòu)需要繼續(xù)迭代。不過(guò)隨著新的方案面世,舊方案的可維護(hù)性會(huì)大大降低,有條件的還是要遷移一下的。Spring Cloud也將會(huì)在未來(lái)某個(gè)時(shí)間點(diǎn)做出一些調(diào)整以適應(yīng)新的架構(gòu)。