国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
微服務(wù)系統(tǒng)之認(rèn)證管理詳解


引言




目錄:


一、簡(jiǎn)介

二、用戶(hù)認(rèn)證

三、網(wǎng)關(guān)及API調(diào)用認(rèn)證

、系統(tǒng)間認(rèn)證和系統(tǒng)內(nèi)認(rèn)證

五、總結(jié)



一、簡(jiǎn)介


首先,我們來(lái)看一下什么是認(rèn)證?


認(rèn)證是確認(rèn)當(dāng)前聲稱(chēng)為 xxx 的用戶(hù)確實(shí)為 xxx 本身。


用戶(hù)可以是人、系統(tǒng)、應(yīng)用或任意調(diào)用者。



最簡(jiǎn)單的認(rèn)證,就是用戶(hù)名密碼登錄,常見(jiàn)的認(rèn)證方式還有:手機(jī)驗(yàn)證碼、生物識(shí)別(指紋,虹膜識(shí)別、面部識(shí)別等)、U 盾、數(shù)字證書(shū)。


關(guān)于認(rèn)證更加詳盡的定義和認(rèn)證方式,請(qǐng)參見(jiàn)維基百科:https://en.wikipedia.org/wiki/Authentication


那在微服務(wù)系統(tǒng)中有哪些地方需要進(jìn)行認(rèn)證管理(不包括DevOps中的認(rèn)證)呢?如下圖所示:



凡是存在交互的地方均需要進(jìn)行認(rèn)證:


  • 用戶(hù)訪問(wèn)系統(tǒng)

  • 系統(tǒng)調(diào)用網(wǎng)關(guān)

  • 網(wǎng)關(guān)調(diào)用系統(tǒng)

  • 系統(tǒng)內(nèi)應(yīng)用之間的調(diào)用

  • 系統(tǒng)間的調(diào)用


可以將它們分為如下三類(lèi):


  • 用戶(hù)認(rèn)證

  • 系統(tǒng)間及系統(tǒng)內(nèi)認(rèn)證

  • 網(wǎng)關(guān)及 API 調(diào)用認(rèn)證


下面我們將對(duì)這三類(lèi)認(rèn)證,分別做詳細(xì)的介紹。


二、用戶(hù)認(rèn)證


微服務(wù)架構(gòu)中會(huì)存在很多系統(tǒng),而且系統(tǒng)間的切換也需要無(wú)縫進(jìn)行,例如一個(gè)前端框架中可能會(huì)集成多個(gè)系統(tǒng)的調(diào)用。此時(shí),我們自然而然的會(huì)想到單點(diǎn)登錄,單點(diǎn)登錄早在已存在。但微服務(wù)中的單點(diǎn)登錄與傳統(tǒng)的單點(diǎn)登錄有一定的差異。


下面這幅圖描述傳統(tǒng)的基于 Session 的單點(diǎn)登錄。



用戶(hù)的授權(quán)信息(例如角色,可訪問(wèn)資源等)保存在應(yīng)用的 session 中,瀏覽器與應(yīng)用系統(tǒng)之間基于sessionID 關(guān)聯(lián),相同應(yīng)用的集群使用緩存(如 Redis、memcached 等),或基于 session 復(fù)制來(lái)進(jìn)行共享 session 信息。


但是微服務(wù)系統(tǒng)中,api 的調(diào)用都是 stateless,沒(méi)有狀態(tài)信息,如下圖所示:



用戶(hù)的授權(quán)信息通常直接封裝到 token 中,用戶(hù)在訪問(wèn)應(yīng)用或系統(tǒng)的時(shí)候,攜帶上 token,應(yīng)用或系統(tǒng)直接從 token 中反解出用戶(hù)的授權(quán)相關(guān)信息。


2.1.OAuth2.0與SSO


OAuth2.0是授權(quán)框架,SSO 是認(rèn)證服務(wù),但是我們可以基于 OAuth2.0實(shí)現(xiàn)SSO 認(rèn)證服務(wù)。


OAuth2.0本身不提供認(rèn)證服務(wù),但是具有足夠的擴(kuò)展空間,讓我們來(lái)擴(kuò)展,例如基于 OAuth2.0 的OIDC。


2.2.基于OAuth2.0的單點(diǎn)登錄



上圖所示,為一個(gè)基于OAuth2.0的 SSO的流程,整體流程基本上和普通的 SSO 一致,所不同的是,存儲(chǔ) app Cookie 的時(shí)候,保存的是經(jīng)過(guò)應(yīng)用或系統(tǒng)處理和加密過(guò)的 token,用戶(hù)后續(xù)請(qǐng)求,帶上加密后的 token,在 app 后端直接解密和抽取出用戶(hù)相關(guān)的授權(quán)信息,流程如下:


1. 用戶(hù)訪問(wèn)app1.com

2. 由于用戶(hù)沒(méi)有登錄,因此跳轉(zhuǎn)到 iam.com

3. 用戶(hù)在 iam.com的登錄頁(yè)面,輸入用戶(hù)名和密碼,確認(rèn)提交,iam 校驗(yàn)成功后

4. 在瀏覽器端寫(xiě)入瀏覽器cookie

5. 重定向到 app1.com,并獲取 token(此處獲取 token流程,與OAuth2.0協(xié)議有關(guān))

6.app1.com檢查 token 有效性

7. 重定向用戶(hù)訪問(wèn)頁(yè)面,并存儲(chǔ) app1.com的token 到app1.com的cookie 中

8. 用戶(hù)訪問(wèn)app2.com

9.app2.com重定向到iam.com

10.iam.com此時(shí)發(fā)現(xiàn) cookie 內(nèi)已經(jīng)有認(rèn)證的token(或 session) 信息

11. 直接重定向到app2.com,并獲得 token 信息

12.app2.com驗(yàn)證 token 信息

13. 重定向到app2.com,并保存app2.com的 token 信息到 app2.com 的 cookie 中


2.3.Token


通常情況下,IAM會(huì)使用類(lèi)似jwt 這樣的協(xié)議去封裝用戶(hù)信息和授權(quán)相關(guān)信息。


App需要對(duì) Token 進(jìn)行處理,加密后再存入到瀏覽器 cookie 中去。



2.4.單點(diǎn)退出


傳統(tǒng)的 SLO 是由 SSO 服務(wù)器通知每一個(gè)應(yīng)用系統(tǒng),強(qiáng)制 session失效。



在微服務(wù)系統(tǒng)中,由于系統(tǒng)或應(yīng)用間調(diào)用是無(wú)狀態(tài)的,因此 IAM 無(wú)法通知每個(gè)應(yīng)用退出指定用戶(hù)。



但是,我們可以利用 OAuth2.0 的refreshToken 機(jī)制,當(dāng)app去refreshToken的時(shí)候,通知應(yīng)用退出。


首先,當(dāng)一個(gè)應(yīng)用點(diǎn)擊退出時(shí),應(yīng)用先通知 IAM 清除當(dāng)前用戶(hù)在 IAM 上的session 和所有相關(guān)的認(rèn)證 Token 信息。


當(dāng)其他應(yīng)用進(jìn)行refreshToken的時(shí)候,返回用戶(hù)已經(jīng)退出的信息,要求用戶(hù)重新登錄。


注意:

這樣的單點(diǎn)退出不是實(shí)時(shí)的,會(huì)存在一個(gè)誤差(accessToken的有效時(shí)間)


2.5.用戶(hù)登錄控制


基于OAuth2.0 實(shí)現(xiàn)的 SSO,可以對(duì)用戶(hù)是否可以登錄某一系統(tǒng)進(jìn)行控制。

在系統(tǒng)去交換/獲取 Token的時(shí)候,判斷用戶(hù)是否具有訪問(wèn)指定系統(tǒng)的權(quán)限。



特點(diǎn):可在線控制用戶(hù)訪問(wèn)或拒絕訪問(wèn)指定系統(tǒng)。


缺點(diǎn):同樣不是實(shí)時(shí)的,會(huì)存在一個(gè)誤差(accessToken的有效時(shí)間)。


2.6.在線用戶(hù)管理



當(dāng)用戶(hù)登錄IAM 的時(shí)候,IAM 可以跟蹤和控制用戶(hù)登錄的超時(shí)。


當(dāng)用戶(hù)使用 SSO“登錄”一個(gè)應(yīng)用或系統(tǒng)時(shí),會(huì)記錄用戶(hù)的 Token 信息。這里需要說(shuō)明一下,用戶(hù)的同一賬號(hào),有時(shí)候是可以同時(shí)在不通的機(jī)器上進(jìn)行登錄的。


通過(guò)控制“用戶(hù)登錄和系統(tǒng)授權(quán)”信息,來(lái)強(qiáng)制當(dāng)前用戶(hù)下線和統(tǒng)計(jì)在線用戶(hù)信息和登錄系統(tǒng)的信息。


三、網(wǎng)關(guān)及 API 調(diào)用認(rèn)證


網(wǎng)關(guān)管理員


網(wǎng)關(guān)管理員訪問(wèn)網(wǎng)關(guān)系統(tǒng),屬于用戶(hù)認(rèn)證,則可以使用用戶(hù)認(rèn)證的方式來(lái)進(jìn)行認(rèn)證


API 調(diào)用



API調(diào)用認(rèn)證可以綁定一組 API 到一個(gè)隨機(jī)的 Token,使用Token 來(lái)唯一標(biāo)識(shí)其綁定的一組 API 的訪問(wèn)權(quán)限,我們可以在系統(tǒng)中對(duì)這個(gè) token 進(jìn)行分配配額和 API 調(diào)用的限制;


注意:Token本身是不綁定調(diào)用者,所以,任何擁有 token 的應(yīng)用都可以進(jìn)行訪問(wèn)。


網(wǎng)關(guān)調(diào)用系統(tǒng)


網(wǎng)關(guān)調(diào)用系統(tǒng),可以按照系統(tǒng)間的調(diào)用進(jìn)行處理,請(qǐng)參見(jiàn)隨后章節(jié),系統(tǒng)間的調(diào)用。


四、系統(tǒng)間認(rèn)證和系統(tǒng)內(nèi)認(rèn)證


系統(tǒng)間認(rèn)證和系統(tǒng)內(nèi)認(rèn)證,實(shí)際上都是應(yīng)用之間的調(diào)用,所不同的是,前者的應(yīng)用是跨系統(tǒng)的,后者是在同一個(gè)系統(tǒng)內(nèi)。



應(yīng)用間的調(diào)用認(rèn)證,可以對(duì)系統(tǒng)信息、應(yīng)用信息、調(diào)用相關(guān)信息進(jìn)行編碼(jwt) 加密(jwe), 然后再通過(guò)http header的方式傳輸?shù)较掠蜗到y(tǒng)或應(yīng)用,下游系統(tǒng)或應(yīng)用通過(guò)解密,獲得調(diào)用者的相關(guān)信息,對(duì)其進(jìn)行認(rèn)證處理。


五、總結(jié)


認(rèn)證管理有很多不同的方式,上面我所說(shuō)的是一些常見(jiàn)的處理手段,也是普元統(tǒng)一認(rèn)證管理平臺(tái)IAM目前使用到的一些技術(shù)手段。


(IAM功能結(jié)構(gòu)圖)


(IAM部署結(jié)構(gòu)圖)


以上我們重點(diǎn)介紹了用戶(hù)管理、SSO、SLO、網(wǎng)關(guān)及 API 調(diào)用認(rèn)證、系統(tǒng)間和系統(tǒng)內(nèi)認(rèn)證及相關(guān)的處理技術(shù)。


當(dāng)然,認(rèn)證管理還有很多其他的處理手段和相關(guān)協(xié)議,比如認(rèn)證授權(quán)協(xié)議: OIDC、SAML等,這里就不贅述了,有機(jī)會(huì)再和大家探討。


參考內(nèi)容

微服務(wù)架構(gòu)下的安全認(rèn)證與鑒權(quán)

https://auth0.com/blog/what-is-and-how-does-single-sign-on-work/

https://searchsecurity.techtarget.com/definition/single-sign-on

https://en.wikipedia.org/wiki/Single_sign-on

https://spin.atomicobject.com/2016/05/30/openid-oauth-saml/

https://www.mutuallyhuman.com/blog/2013/05/09/choosing-an-sso-strategy-saml-vs-oauth2/

https://blog.heroku.com/oauth-sso


精選提問(wèn):


問(wèn)1:auth2tocken 如何驗(yàn)證有效性和合法性?跨服務(wù)的auth2如何驗(yàn)證?


答:OAuth2 的 token 驗(yàn)證有幾種方式: jwt 使用數(shù)字簽名進(jìn)行驗(yàn)證;jwt,jwk中都有其詳細(xì)的描述,可以參見(jiàn)協(xié)議的詳細(xì)內(nèi)容,跨服務(wù)的驗(yàn)證也是同樣的驗(yàn)證方式。


問(wèn)2:staleless token方案,后臺(tái)沒(méi)有session嗎?那當(dāng)前登錄的附加信息如何處理?


答:staleless token后端是沒(méi)有 session,否則也就不是 stateless,附加信息一般都是編碼到 token 中去的,具體大家可以參見(jiàn)jwt協(xié)議相關(guān)的內(nèi)容:https://jwt.io/


問(wèn)3:如果一個(gè)大系統(tǒng)內(nèi)部有微服務(wù)系統(tǒng)、其它普通的非微服務(wù)系統(tǒng),還能否使用您所講的微服務(wù)token機(jī)制進(jìn)行統(tǒng)一認(rèn)證?如果可以,需要怎樣做?


答:是可以的,至于怎么做,這個(gè)需要您的非微服務(wù)系統(tǒng)是具體的安全框架是怎么樣的,比如:spring security,apache shiro 都可以通過(guò)自定義 Filter 的方式來(lái)實(shí)現(xiàn)。


問(wèn)4:IAM系統(tǒng)哪里可以體驗(yàn)?


答:IAM 會(huì)和我們近期發(fā)布的 Platform 8LA 版本一并發(fā)布,請(qǐng)隨后持續(xù)關(guān)注我們的產(chǎn)品發(fā)布動(dòng)態(tài),謝謝!


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
多種認(rèn)證、授權(quán)模型的比較
自動(dòng)化運(yùn)維平臺(tái)中的統(tǒng)一認(rèn)證接入與SSO單點(diǎn)登錄
系統(tǒng)的講解 - SSO單點(diǎn)登錄
跨域 Cookie Token Web APP均支持的分布式單點(diǎn)登錄框架開(kāi)箱即用
微服務(wù)架構(gòu)下的統(tǒng)一身份認(rèn)證和授權(quán)
認(rèn)證授權(quán)基礎(chǔ)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服