本篇內(nèi)容主要講解“Spring Security OAuth過期了怎么辦”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Spring Security OAuth過期了怎么辦”吧!
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名申請、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、淮安區(qū)網(wǎng)站維護、網(wǎng)站推廣。
大家在選擇 OAuth3 依賴的時候,可能也會困惑,有好幾個地方都可以選:
那么到底選擇哪一個依賴合適呢?這不同的依賴又有什么區(qū)別?今天松哥就來和大家聊一聊 Spring Security 中關(guān)于 OAuth3 的恩怨。
先來大致介紹一下 OAuth3 在 Spring 框架中的發(fā)展歷程。
大約十年前,Spring 引入了一個社區(qū)驅(qū)動的開源項目 Spring Security OAuth,并將其納入 Spring 項目組合中。到今天,它已經(jīng)發(fā)展成為一個成熟的項目,可以支持大部分 OAuth 規(guī)范,包括資源服務(wù)器
、客戶端
和授權(quán)服務(wù)器
等。
現(xiàn)在它已成為 UAA(User Account and Authentication Server) 的基礎(chǔ)。Spring Security OAuth 項目已成為一個樣板項目,它證明了 Spring 社區(qū)可以出色的完成工作。
然而早期的項目存在這樣一些問題:
OAuth 是在很早的時候完成的,開發(fā)者無法預(yù)料未來的變化以及這些代碼到底要被怎么用,導(dǎo)致很多 Spring 項目提供了自己的 OAuth 支持,這就帶來了 OAuth3 支持的碎片化。
最早的 OAuth 項目同時支持 OAuth2.0 和 OAuth3.0,現(xiàn)在 OAuth2.0 早已經(jīng)不再使用,可以放棄了。
現(xiàn)在我們有更多的庫可以選擇,可以在這些庫的基礎(chǔ)上去開發(fā),以便更好的支持 JWT 等新玩意。
基于以上這些原因,官方?jīng)Q定在社區(qū)成功的基礎(chǔ)上,重寫 Spring Security OAuth,以更好地協(xié)調(diào) Spring 和 OAuth,并簡化代碼庫,以使 Spring 的 OAuth 支持更加靈活。
然而,在重寫的過程中,發(fā)生了不少波折。
事情得從 2018 年 1 月 30 號講起。
那天 Spring 官方發(fā)了一個通知,說是要逐漸停止現(xiàn)有的 OAuth3 支持,而在 Spring Security5 中構(gòu)建下一代 OAuth3.0 支持。
為什么要這樣呢?
大家知道,OAuth3 只是一種協(xié)議,Spring 框架通過代碼對這種協(xié)議進行落地。
當時 OAuth3 的落地方案比較混亂(這種混亂到今天依然存在),在 Spring Security OAuth、Spring Cloud Security、Spring Boot 1.5.x 以及當時最新的 Spring Security5.x 中都提供了對 OAuth3 的實現(xiàn)。
以至于當開發(fā)者需要使用 OAuth3 時,不得不問,到底選哪一個依賴合適呢?已經(jīng)有三個地方提供了 OAuth3 的支持,已經(jīng)夠混亂了,為什么還要在最新的 Spring Security5.x 中繼續(xù)提供實現(xiàn)呢?
太亂了!
所以 Spring 官方?jīng)Q定有必要將 OAuth3.0 的支持統(tǒng)一到一個項目中,以便為用戶提供明確的選擇并避免任何潛在的混亂,同時 OAuth3 的開發(fā)文檔也要重新編寫,以方便開發(fā)人員學(xué)習(xí)。所有的決定將在 Spring Security5 中開始,構(gòu)建下一代 OAuth3.0 的支持。
從那個時候起,Spring Security OAuth 項目就正式處于維護模式。官方將提供至少 1 年的錯誤/安全修復(fù)程序,并且會考慮添加次要功能,但不會添加主要功能。同時將 Spring Security OAuth 中的所有功能重構(gòu)到 Spring Security5.x 中。
老實說,這是一個英明的決定,當時并沒有引起太多的反響。但是接下來的事情就不是那么順利了。
時間到了 2019.11.14。
這天,官方又發(fā)了個通知。
先說了 Spring Security OAuth 在遷往 Spring Security5.x 的過程非常順利,大部分遷移工作已經(jīng)完成了,剩下的將在 5.3 版本中完成遷移,在遷移的過程中還添加了許多新功能,包括對 OpenID Connect1.0 的支持
接下來話鋒一轉(zhuǎn),說了一件很多人難以接受的事情,那就是將不再提供對授權(quán)服務(wù)器的支持(要是小伙伴們不懂什么是授權(quán)服務(wù)器,可以在公眾號江南一點雨后臺回復(fù) OAuth3
,有松哥寫的 OAuth3 教程)。
不提供的原因,官方給了兩個:
在 2019 年,將有大量的商業(yè)和開源授權(quán)服務(wù)器可用。
授權(quán)服務(wù)器是使用一個庫來構(gòu)建產(chǎn)品,而 Spring Security 作為框架,并不適合做這件事情。
一石激起千層浪,許多開發(fā)者表示對此難以接受。這件事也在 Spring 社區(qū)引發(fā)了激烈的討論,好在 Spring 官方愿意傾聽來自社區(qū)的聲音。
這天,官方又發(fā)了個通知。
這次宣布了 Spring Authorization Server 項目。這是一個由 Spring Security 團隊領(lǐng)導(dǎo)的社區(qū)驅(qū)動的項目,致力于向 Spring 社區(qū)提供 Authorization Server 支持。
官方傾聽了來自社區(qū)的聲音,決定繼續(xù)提供授權(quán)服務(wù)器。
這次只是宣布了一下,算是安撫了一下社區(qū)的情緒,但是項目還沒開發(fā)出來。
Spring Authorization Server 0.0.1 正式發(fā)布!
同時公布了項目源碼地址:https://github.com/spring-projects-experimental/spring-authorization-server
在這個版本中,主要提供了如下功能:
OAuth 2.0授權(quán)代碼授予? -RFC 6749
OAuth 2.0客戶端憑據(jù)授予? -RFC 6749
JSON Web令牌(JWT)? -RFC 7519
JSON Web簽名(JWS)? -RFC 7515
JSON Web密鑰(JWK)? -RFC 7517
密鑰管理,用于在簽署JWT(JWS)時提供密鑰
其他功能還在緊鑼密鼓的開發(fā)中。
這就是 OAuth3 最近幾年的變更之路。
回到最開始的問題。
類過期了怎么辦?
類過期是因為舊的寫法已經(jīng)不被支持,松哥舉個簡單例子,以前我們定義資源服務(wù)器是這樣的:
@Configuration @EnableResourceServer public class ResourceServerConfig extends ResourceServerConfigurerAdapter { @Bean RemoteTokenServices tokenServices() { RemoteTokenServices services = new RemoteTokenServices(); services.setCheckTokenEndpointUrl("http://localhost:8080/oauth/check_token"); services.setClientId("javaboy"); services.setClientSecret("123"); return services; } @Override public void configure(ResourceServerSecurityConfigurer resources) throws Exception { resources.resourceId("res1").tokenServices(tokenServices()); } @Override public void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin/**").hasRole("admin") .anyRequest().authenticated(); } }
現(xiàn)在遷移到 Spring Security5.x 中之后,我們是這樣定義的:
@Configuration public class MyResourceServer extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .anyRequest().authenticated() .and() .oauth3ResourceServer() .opaqueToken() .introspectionUri("http://localhost:8080/oauth/check_token") .introspectionClientCredentials("javaboy", "123"); } }
這兩段代碼作用是一樣的。后面的是目前最新寫法,不存在過期的問題。
到此,相信大家對“Spring Security OAuth過期了怎么辦”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
分享文章:SpringSecurityOAuth過期了怎么辦
網(wǎng)站鏈接:http://jinyejixie.com/article6/ieppig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站維護、、電子商務(wù)、搜索引擎優(yōu)化、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)