您好,登錄后才能下訂單哦!
SpringBootSecurity中OAuth2.0的介紹是怎樣的,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
security本身已經(jīng)實現(xiàn)的比較完善的安全處理,加上JWT的驗證方式,可以實現(xiàn)一個理想的登錄功能。
我們來看登錄,給用戶一個賬號,驗證有效后登錄成功,這一步是任何系統(tǒng)都無法避免的。無論這個賬號只能登錄一個系統(tǒng)還是像支付寶賬號一樣登錄多個app,無論賬號是用戶名密碼,還是手機驗證碼,或者郵箱等其他形式,可以說認證這一步是最基礎的,無法避免。
登錄成功后,通過授權(quán)可以讓用戶訪問一些登錄前無法訪問的頁面或者接口,而且無論session或者token,其實都是有有效期的,過了有效期就需要重新登錄。從這種形式上看,授權(quán)包含了更多的場景,不僅是內(nèi)部已經(jīng)登錄的用戶,還有可能是第三方的應用,或者兩個系統(tǒng)之間的信息交換等等。而且微服務的開發(fā)模式下,服務越來越多,可以被授權(quán)的內(nèi)容也越來越多,如果沒有統(tǒng)一的方式來管理這些接口資源的授權(quán),會非常麻煩。因此,系統(tǒng)針對所有的訪問需要有統(tǒng)一的認證和授權(quán)的機制,而 OAuth3.0 是我們實現(xiàn)這種統(tǒng)一認證授權(quán)非常好的一個選擇。
OAuth 2.0 是目前最流行的授權(quán)機制,用來授權(quán)第三方應用,獲取用戶數(shù)據(jù)。最經(jīng)典的場景就是我們使用QQ來進行第三方登錄的時候,選擇可以訪問用戶的哪些信息。關于OAuth 2.0的介紹,推薦讀取阮一峰的三篇介紹文章,地址是:
OAuth 2.0 的一個簡單解釋
OAuth 2.0 的四種方式
GitHub OAuth 第三方登錄示例教程
這三篇文章是一個非常好和非常詳細的OAuth3.0的入門。
關于OAuth3.0的理解,用來授權(quán)第三方應用,以前總是理解不到位的原因是,我沒有站在不同的角度去分析思考。比如在使用QQ進行第三方登錄時,是我們登錄的軟件需要獲取我們qq賬號的部分用戶信息,因此需要騰訊的認證授權(quán),我們需要在一鍵登錄(授權(quán))的時候,登錄QQ,點擊同意即可。
而如果我們作為開發(fā)人員,去設計一個OAuth3.0授權(quán)功能的時候,需要從開發(fā)人員角度去思考哪部分是我們要完成的功能,比如上面的QQ第三方登錄,首先QQ軟件是我們開發(fā)人員開發(fā)的,第三方應用有一個我們軟件的QQ賬號,第三方用戶想在自己的軟件上面展示第三方的QQ賬號的部分用戶信息,需要來我們的授權(quán)服務申請,同意后才能查詢我們開發(fā)的軟件中的用戶信息,因此我們要開發(fā)的是一個基本的QQ服務(資源服務),一個授權(quán)服務,并且第三方可以在我方注冊賬號,或者可以給第三方分配賬號。
關于第三方應用,可以是其它公司的系統(tǒng),也可以本公司架構(gòu)內(nèi)的其它服務,大家可以根據(jù)阮一峰的文章,參考開發(fā)人員的任務屬于文章中的哪些內(nèi)容。這樣,對開發(fā)OAuth3.0和使用OAuth3.0會有清晰的區(qū)分和理解。
單點登錄(SingleSignOn,SSO),就是通過用戶的一次性鑒別登錄。當用戶在身份認證服務器上登錄一次以后,即可獲得訪問單點登錄系統(tǒng)中其他關聯(lián)系統(tǒng)和應用軟件的權(quán)限,同時這種實現(xiàn)是不需要管理員對用戶的登錄狀態(tài)或其他信息進行修改的,這意味著在多個應用系統(tǒng)中,用戶只需一次登錄就可以訪問所有相互信任的應用系統(tǒng)。這種方式減少了由登錄產(chǎn)生的時間消耗,輔助了用戶管理,是目前比較流行的。
當用戶第一次訪問應用系統(tǒng)A的時候,因為還沒有登錄,會被引導到認證系統(tǒng)中進行登錄;根據(jù)用戶提供的登錄信息,認證系統(tǒng)進行身份校驗,如果通過校驗,應該返回給用戶一個認證的憑據(jù)--ticket;用戶再訪問別的應用的時候就會將這個ticket帶上,作為自己認證的憑據(jù),應用系統(tǒng)接受到請求之后會把ticket送到認證系統(tǒng)進行校驗,檢查ticket的合法性。如果通過校驗,用戶就可以在不用再次登錄的情況下訪問應用系統(tǒng)B和應用系統(tǒng)C了。
從上面的介紹可以看得出,單點登錄需要的正是一個共享的授權(quán)和驗證系統(tǒng),也就是說SSO是可以使用OAuth3.0機制去設計實現(xiàn)的。但是SSO和OAuth3.0也有一點區(qū)別,sso和oauth3.0在應用場景上的區(qū)別在于,使用sso的各個系統(tǒng)(子模塊)之間是互相信任的,通常是一個廠家的各個軟件產(chǎn)品,或者是一個產(chǎn)品的不同模塊系統(tǒng)。使用oauth3.0的各個應用大部分之間是互相不信任的,通常是不同廠家之間的賬號共享。OAuth3.0 解決的是服務提供方(微信等)給第三方應用授權(quán)的問題,而SSO解決的是大型系統(tǒng)中各個子系統(tǒng)如何共享登陸狀態(tài)的問題(比如你登錄了百度首頁,那么你進入百度百科,百度貼吧,百度音樂等服務的時候都不需要重新登錄)。
Spring Cloud Security組件可以理解為,springboot security加上OAuth3.0的整合,可以實現(xiàn)微服務系統(tǒng)中sso單點登錄功能,和第三方授權(quán)功能,是一個強大的權(quán)限組件。關于springboot2.1.x版本對應使用的springcloud的security組件的官方文檔如下:
https://cloud.spring.io/spring-cloud-static/spring-cloud-security/2.1.4.RELEASE/single/spring-cloud-security.html
文檔的目錄如下:
從目錄上看,Spring Cloud Security組件主要的功能也是sso和資源認證授權(quán),后面的內(nèi)容主要用來學習Spring Cloud Security。
看完上述內(nèi)容,你們掌握SpringBootSecurity中OAuth2.0的介紹是怎樣的的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。