Spring Security團隊正式宣布Spring Security OAuth終止維護须鼎。
目前官網(wǎng)的主頁已經(jīng)高亮提醒徹底停止維護。
舊的Spring Security OAuth項目終止到2.5.2.RELEASE版本府蔗,該項目將不會再進行任何的迭代晋控,包括Bug修復(fù),之前胖哥已經(jīng)提醒該項目即將停止維護姓赤,有心的同學(xué)已經(jīng)進行了遷移赡译。
項目文檔和代碼倉庫被移除
目前該項目的官方文檔已經(jīng)正式從spring.io移除,文檔已經(jīng)指向404不铆,這是連文檔也沒有了蝌焚。新增了OAuth2授權(quán)服務(wù)器Spring Authorization Server的文檔。
不僅僅文檔被移除狂男,連項目的倉庫也被遷移到Spring的過期項目倉庫spring-attic
并被標記為read-only综看。
Spring Security OAuth的Spring Boot自動配置代碼倉庫也一并被遷移,也就是說Spring Boot相關(guān)的自動配置也被移除岖食。
從這種情況看來大約Spring Security OAuth的確是死了红碑。難道就沒有可用的了嗎?當然不是泡垃。
遷移指南
這是胖哥總結(jié)的遷移指南析珊。
依賴項檢查
那么如何檢查你的項目是否用了舊的OAuth2設(shè)施呢?當然是對依賴進行檢查蔑穴。以下清單中的依賴任何版本的都是過期的忠寻,都需要遷移:
<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替代方案
需要開發(fā)者掌握OAuth2.0存和、OAuth2.1奕剃、OIDC 1.0的一些知識。
Spring Security 5中集成了OAuth2 Client和Resource 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授權(quán)服務(wù)器依賴
目前Spring生態(tài)中的OAuth2授權(quán)服務(wù)器是Spring Authorization Server,目前已具備生產(chǎn)就緒能力藏澳。在最新的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也將在不久實裝凉驻。
學(xué)習(xí)指南
胖哥近幾個月一直在對新的OAuth2相關(guān)的進行系統(tǒng)化總結(jié)腻要。因此你只要關(guān)注胖哥,總能獲得相關(guān)的知識和實戰(zhàn)干貨分享涝登。當然這里胖哥也給出了一些參考的文獻:
- OAuth2框架:https://oauth.net
- OIDC 1.0協(xié)議:https://openid.net
- Spring Security: http://felord.cn
- 新的Spring Security OAuth2:http://felord.cn
項目參考代碼DEMO:
- Spring Security 5 學(xué)習(xí):https://gitee.com/felord/security-learning
- Spring Security OAuth2 教程:https://github.com/NotFound403/spring-security-oauth2-tutorial
- 授權(quán)服務(wù)器控制臺Id Server:https://github.com/NotFound403/id-server
- 登錄擴展插件:https://github.com/NotFound403/spring-security-login-extension
總結(jié)
舊的Spring Security OAuth過期雄家,其實也不必恐慌,除非你們在這一方面的架構(gòu)需要繼續(xù)迭代胀滚。不過隨著新的方案面世趟济,舊方案的可維護性會大大降低,有條件的還是要遷移一下的咽笼。Spring Cloud也將會在未來某個時間點做出一些調(diào)整以適應(yīng)新的架構(gòu)顷编。請持續(xù)關(guān)注,后面會及時帶來相關(guān)的消息剑刑。
關(guān)注公眾號:碼農(nóng)小胖哥媳纬,獲取更多資訊