溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎樣淺談Spring Security中的OAuth2

發(fā)布時(shí)間:2021-12-02 17:24:18 來(lái)源:億速云 閱讀:197 作者:柒染 欄目:大數(shù)據(jù)

怎樣淺談Spring Security中的OAuth2,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

首先我們來(lái)講述大概介紹一下OAuth3。

oAuth3是一種授權(quán)協(xié)議。它主要是為了簡(jiǎn)化客戶端開發(fā)人員的工作,同時(shí)為需要授權(quán)的服務(wù)提供授權(quán)流程,主要包括網(wǎng)站、桌面、app、小程序等。 我從官網(wǎng)把它幾種授權(quán)模式搬過來(lái)了:

  1. 授權(quán)碼(Authorization Code)

    機(jī)密和公共客戶端使用授權(quán)碼授予類型來(lái)交換訪問令牌的授權(quán)碼。 用戶通過重定向URL返回到客戶端后,應(yīng)用程序?qū)腢RL獲得授權(quán)代碼,并使用它來(lái)請(qǐng)求訪問令牌。

  2. 客戶憑證(Client Credentials)

    客戶端使用“客戶端證書”授予類型來(lái)獲取用戶上下文之外的訪問令牌。客戶端通常使用它來(lái)訪問有關(guān)其自身的資源,而不是訪問用戶的資源。

  3. 設(shè)備代碼(Device Code)

    設(shè)備流中的無(wú)瀏覽器或受輸入限制的設(shè)備使用設(shè)備代碼授權(quán)類型,以將先前獲得的設(shè)備代碼交換為訪問令牌。設(shè)備代碼授權(quán)類型值為urn:ietf:params:oauth:grant-type:device_code。

  4. 刷新令牌(Refresh Token)

    當(dāng)訪問令牌過期時(shí),客戶端使用“刷新令牌”授予類型來(lái)將刷新令牌交換為訪問令牌。這允許客戶端繼續(xù)具有有效的訪問令牌,而無(wú)需與用戶進(jìn)行進(jìn)一步的交互。

  5. 密碼授權(quán)(Implicit Flow)

    密碼授予類型是一種將用戶憑據(jù)交換為訪問令牌的方式。因?yàn)榭蛻舳藨?yīng)用程序必須收集用戶的密碼并將其發(fā)送到授權(quán)服務(wù)器,所以不建議再使用此授權(quán)。該流程沒有為多因素身份驗(yàn)證或委托帳戶之類的機(jī)制提供任何機(jī)制,因此在實(shí)踐中是相當(dāng)有限的。

    最新的OAuth 2.0安全性最佳最新實(shí)踐完全禁止密碼授予。

  6. 隱式流(Password Grant)

    Implicit流是先前為本機(jī)應(yīng)用程序和JavaScript應(yīng)用程序推薦的簡(jiǎn)化的OAuth流,其中本機(jī)訪問令牌無(wú)需額外的授權(quán)代碼交換步驟即可立即返回訪問令牌。不建議使用隱式流(有些服務(wù)器完全禁止該流),因?yàn)樵贖TTP重定向中返回訪問令牌而未確認(rèn)客戶端已收到訪問令牌的固有風(fēng)險(xiǎn)。公共客戶端(例如本機(jī)應(yīng)用程序和JavaScript應(yīng)用程序)現(xiàn)在應(yīng)該使用帶有PKCE擴(kuò)展名的授權(quán)代碼流。

    其中密碼授權(quán)及隱式流兩種模式在OAuth官網(wǎng)中是已經(jīng)屬于遺留模式,不在推薦了。但是我的Spring Security OAuth3系列文章主要講述的將是密碼模式,不要問我為啥?因?yàn)槲沂切枰ソ鉀Q我們現(xiàn)有框架中的登陸問題。所以我會(huì)著重密碼模式!

個(gè)人理解的OAuth3

直到我寫到這里,可能我才對(duì)OAuth3有了更新的一個(gè)認(rèn)識(shí)!根據(jù)官方介紹OAuth3應(yīng)該是一個(gè)第三方授權(quán)機(jī)制,即有點(diǎn)類似于是一個(gè)能提供公共授權(quán)機(jī)制的模塊。因此在現(xiàn)實(shí)中這個(gè)授權(quán)模塊應(yīng)該具有相對(duì)的權(quán)威性,又或者說在一個(gè)范圍內(nèi)的應(yīng)用程序,可以去請(qǐng)求同一個(gè)授權(quán)模塊進(jìn)行使用。
那這個(gè)授權(quán)模塊是不是也應(yīng)該是一個(gè)至少擁有用戶管理功能的信息系統(tǒng),能夠進(jìn)行身份授權(quán),授權(quán)后授權(quán)模塊允許這個(gè)賬號(hào)可以使用某些功能。
但是問題來(lái)了,我在文章開頭寫了我們主要是搭建我們系統(tǒng)的登陸模塊,暫時(shí)未用到對(duì)第三方應(yīng)用授權(quán)。我們?cè)谶@個(gè)系統(tǒng)中是否有必要引入OAuth3的授權(quán)機(jī)制?

說實(shí)話寫到上一行,我停下來(lái)想了十分鐘。我在本文中提到的系統(tǒng)屬于我們的核心系統(tǒng),包括整個(gè)公司的核心業(yè)務(wù)功能都在上面。如果以后我們?cè)跀U(kuò)展其他應(yīng)用時(shí),是需要用到第三方授權(quán)的,不然就需要在每個(gè)應(yīng)用中都去維護(hù)一套系統(tǒng)用戶了。而且我們通過OAuth3也可以登陸本系統(tǒng)的,所以使用OAuth3.0是完全沒有問題的。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI