国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

從普通登錄到單點(diǎn)登錄(SSO)

這篇具有很好參考價(jià)值的文章主要介紹了從普通登錄到單點(diǎn)登錄(SSO)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

隨著前端登錄場(chǎng)景的日益復(fù)雜化和技術(shù)思想的不斷演進(jìn),前端在登錄方面的知識(shí)結(jié)構(gòu)變得越來(lái)越復(fù)雜。對(duì)于前端開發(fā)者來(lái)說(shuō),在日常工作中根據(jù)不同的登錄場(chǎng)景提供合適的解決方案是我們的職責(zé)所在,本文將梳理前端登錄的演變過(guò)程,希望能幫助跟我遇到同樣問(wèn)題的開發(fā)者。

無(wú)狀態(tài)的HTTP

HTTP是無(wú)狀態(tài)的,每條請(qǐng)求都是獨(dú)立進(jìn)行的。同一個(gè)用戶多次發(fā)起請(qǐng)求,服務(wù)端無(wú)法識(shí)別多個(gè)HTTP請(qǐng)求來(lái)自同一個(gè)用戶。為了解決這個(gè)問(wèn)題,引入了會(huì)話機(jī)制(session)。

基于會(huì)話(session)的認(rèn)證

會(huì)話(session)機(jī)制,使每條HTTP請(qǐng)求之間保持客戶端的狀態(tài)信息。session對(duì)象保存在服務(wù)端的內(nèi)存或數(shù)據(jù)庫(kù)中,這個(gè)session對(duì)象包含有用戶的基本信息。sessionId(會(huì)話ID)保存在客戶端中的cookie或localstorage中,每次客戶端向服務(wù)端發(fā)送請(qǐng)求時(shí),都會(huì)攜帶sessionId,服務(wù)端拿到sessionId對(duì)該請(qǐng)求進(jìn)行身份驗(yàn)證。sessionId在請(qǐng)求傳輸過(guò)程中,可以被放置在cookie中,也可以放置在body中。

基于會(huì)話的認(rèn)證方式是傳統(tǒng)的方法,在很長(zhǎng)的時(shí)間內(nèi)被使用。但也存在一些缺點(diǎn):

  • 服務(wù)器負(fù)擔(dān)大。服務(wù)端需要為每個(gè)用戶維護(hù)一個(gè)會(huì)話對(duì)象,這可能在大規(guī)模應(yīng)用中導(dǎo)致服務(wù)器負(fù)載增加
  • 水平擴(kuò)展困難。在分布式架構(gòu)中,即應(yīng)用程序在多個(gè)服務(wù)器上運(yùn)行時(shí),用戶可能會(huì)在不同的服務(wù)器上交替訪問(wèn)應(yīng)用程序,所以需要確保服務(wù)器之間可以共享會(huì)話狀態(tài)。
  • 不適用于無(wú)狀態(tài)服務(wù)。對(duì)于RESTful API這種無(wú)狀態(tài)服務(wù),更適合基于令牌的認(rèn)證方式。

跨域認(rèn)證

隨著前后端開發(fā)模式的變化,前端和后端更傾向于分開部署,前端的靜態(tài)資源部署在一個(gè)服務(wù)器中,后端的API部署在另外一個(gè)服務(wù)器中。這意味著前端的登錄需要進(jìn)行跨域認(rèn)證??缬蛘J(rèn)證即使用跨域請(qǐng)求的方式,進(jìn)行身份認(rèn)證。常見的幾種跨域認(rèn)證方案:

  • JSOP:只能用于跨域請(qǐng)求,不能進(jìn)行身份驗(yàn)證
  • CORS:可以進(jìn)行跨域請(qǐng)求和身份認(rèn)證。但是當(dāng)多個(gè)業(yè)務(wù)系統(tǒng)調(diào)用同一個(gè)API服務(wù)下的接口時(shí),隨著業(yè)務(wù)系統(tǒng)數(shù)量的增長(zhǎng),后端開發(fā)人員需要頻繁地更改跨域配置才能使新開發(fā)的系統(tǒng)可以進(jìn)行跨域請(qǐng)求。當(dāng)出現(xiàn)這種情況時(shí),使用nginx反向代理將跨域的控制權(quán)移交至前端,是更好的方案。
  • 代理:使用nginx做代理,將跨域請(qǐng)求轉(zhuǎn)發(fā)至目標(biāo)服務(wù)器,并將響應(yīng)返回給客戶端。

iframe場(chǎng)景下,使用localstorage做跨域存儲(chǔ),通過(guò)postmessage和iframe的方式跨域共享localstorage,但是safari不能使用postMessage,可以改用url方式跨域共享localstorage

基于令牌(token)的認(rèn)證

為了解決在分布式架構(gòu)中session認(rèn)證存在的問(wèn)題,可以使用基于token的認(rèn)證方式。由于token只會(huì)存儲(chǔ)在客戶端,這樣可以減少服務(wù)端的負(fù)擔(dān)和提升了服務(wù)端水平擴(kuò)展能力。

基于令牌(token)的認(rèn)證時(shí)序圖

下面是基于令牌認(rèn)證的時(shí)序圖:

從普通登錄到單點(diǎn)登錄(SSO),前端

優(yōu)點(diǎn):

  • 減少服務(wù)端的負(fù)擔(dān)。因?yàn)閠oken只會(huì)存儲(chǔ)在客戶端上,不會(huì)存儲(chǔ)在服務(wù)端。
  • 提升了服務(wù)端水平擴(kuò)展能力。因?yàn)榉?wù)端水平擴(kuò)展不再需要處理會(huì)話狀態(tài)的同步邏輯。

缺點(diǎn):

  • 簽發(fā)的token無(wú)法撤銷。token包含了有效期信息,在整個(gè)有效期內(nèi)不能撤銷,直至過(guò)期。
  • 無(wú)法實(shí)現(xiàn)單點(diǎn)登出。如果使用令牌方式實(shí)現(xiàn)單點(diǎn)登錄SSO功能,那么難以實(shí)現(xiàn)單點(diǎn)登出SLO。因?yàn)閱吸c(diǎn)登出涉及到在所有相關(guān)聯(lián)系統(tǒng)中注銷用戶,所以要實(shí)現(xiàn)此功能需要額外的機(jī)制配合。

以上是最基礎(chǔ)版本的令牌的認(rèn)證方式,還存在著一些缺點(diǎn),主要用來(lái)闡述令牌認(rèn)證的核心流程。要規(guī)避掉上述缺點(diǎn),還需要配合其他機(jī)制(下面OAUTH部分會(huì)更深一步講解)。

令牌(token)的生成

token最常見的方式是JWT(JSON Web Token),JWT是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標(biāo)準(zhǔn)((RFC 7519),該token被設(shè)計(jì)為緊湊且安全的,特別適用于分布式站點(diǎn)的單點(diǎn)登錄(SSO)場(chǎng)景。JWT由三部分組成,由.分割,形如:Header.Payload.Signature。

1. Header(頭部)

Header部分是一個(gè)JSON對(duì)象,描述JWT元數(shù)據(jù),如下:

{
  "alg": "HS256",
  "typ": "JWT"
}

alg表示簽名的算法,type表示令牌的類型。最后將上面的JSON對(duì)象使用Base64URL算法轉(zhuǎn)成字符串。

2. Payload(負(fù)載)

payload部分是一個(gè)JSON對(duì)象,表示JWT實(shí)際傳輸?shù)臄?shù)據(jù),官方定義了如下字段供選擇:

-   iss (issuer):簽發(fā)人
-   exp (expiration time):過(guò)期時(shí)間
-   sub (subject):主題
-   aud (audience):受眾
-   nbf (Not Before):生效時(shí)間
-   iat (Issued At):簽發(fā)時(shí)間
-   jti (JWT ID):編號(hào)

也可以自定義字段,最后將上面的JSON對(duì)象使用Base64URL算法轉(zhuǎn)成字符串。

3. Signature(簽名)

signature部分是對(duì)前兩部分的簽名,防止數(shù)據(jù)被篡改。公式如下:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

secret是由服務(wù)端才有的密鑰。

單點(diǎn)登錄(SSO)

用戶只需要登錄一次,就可以在多個(gè)相關(guān)聯(lián)的系統(tǒng)上訪問(wèn),避免了多次登錄的麻煩。單點(diǎn)登錄簡(jiǎn)化了登錄流程,提升了用戶體驗(yàn)。目前有兩種比較常見的實(shí)現(xiàn)方式:CASOIDC。

CAS

CAS(Central Authentication Service)是一種用于實(shí)現(xiàn)單點(diǎn)登錄SSO的開源協(xié)議。它提供了一個(gè)中心化的認(rèn)證服務(wù)器(CAS),CAS服務(wù)器負(fù)責(zé)用戶的登錄和身份認(rèn)證,并生成一個(gè)票據(jù)(ticket)用于訪問(wèn)其他應(yīng)用程序。如下圖是CAS標(biāo)準(zhǔn)流程的時(shí)序圖:

從普通登錄到單點(diǎn)登錄(SSO),前端

需要注意的幾點(diǎn):

  • CAS是基于票據(jù)(ticket)實(shí)現(xiàn)單點(diǎn)登錄的。票據(jù)是一種身份驗(yàn)證憑據(jù),與token有一定區(qū)別。
  • CAS中包含有TGT和ST兩種ticket。TGT是長(zhǎng)期有效的憑據(jù),用于獲取短期的ST憑據(jù);ST憑據(jù)用來(lái)向特定服務(wù)驗(yàn)證身份的。
OIDC(OpenID Connect)

OAUTH是一個(gè)授權(quán)協(xié)議,在全世界得到了廣泛的應(yīng)用,目前是2.0版本,但并不是專門針對(duì)單點(diǎn)登錄SSO設(shè)計(jì)的協(xié)議。OIDC是基于OAUTH實(shí)現(xiàn)的身份認(rèn)證協(xié)議,是OAUTH的超集,可以實(shí)現(xiàn)單點(diǎn)登錄功能。與CAS不同的是,OIDC是基于token的認(rèn)證方式。

1. OAUTH2.0

OAUTH是一個(gè)授權(quán)協(xié)議,是為了解決同一個(gè)賬號(hào)可以登錄所有應(yīng)用的問(wèn)題?,F(xiàn)在很多第三方應(yīng)用都接入了微信登錄,那么微信登錄就是一個(gè)大的身份認(rèn)證服務(wù),所有接入了微信登錄體系的APP,都可以使用微信賬號(hào)直接登錄。

1.1. OAUTH2.0 原理

OAuth 2.0的運(yùn)行流程如下圖,摘自RFC 6749。

從普通登錄到單點(diǎn)登錄(SSO),前端

認(rèn)證服務(wù)器除了返回access token,refresh token也是可選項(xiàng)。

  • access token:表示訪問(wèn)令牌。有效期短,解決token無(wú)法撤銷問(wèn)題。
  • refresh token:表示更新令牌。有效期長(zhǎng),用于獲取access token。

2. OIDC

下圖是網(wǎng)上找到的一張基于token實(shí)現(xiàn)單點(diǎn)登錄的時(shí)序圖,雖然與標(biāo)準(zhǔn)的OIDC流程不一樣,但是也大致說(shuō)清楚了基于token實(shí)現(xiàn)單點(diǎn)登錄的流程

從普通登錄到單點(diǎn)登錄(SSO),前端

CAS與OIDC的總結(jié):

  • CAS業(yè)務(wù)系統(tǒng)是基于session的保持登錄態(tài),而OIDC業(yè)務(wù)系統(tǒng)是基于token的
  • CAS單點(diǎn)登錄的方式更適合企業(yè)內(nèi)部各個(gè)業(yè)務(wù)系統(tǒng)之間統(tǒng)一單點(diǎn)登錄;而OIDC除了單點(diǎn)登錄,還可以為第三方軟件提供授權(quán)服務(wù)

作者:復(fù)讀機(jī)
鏈接:https://juejin.cn/post/7324351711656394779
來(lái)源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-800998.html

到了這里,關(guān)于從普通登錄到單點(diǎn)登錄(SSO)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 飛書-SSO單點(diǎn)登錄

    飛書-SSO單點(diǎn)登錄

    飛書 sso 單點(diǎn)登錄 可以參考 飛書js-sdk Documentation - Feishu Open Platform 實(shí)現(xiàn)效果 核心代碼 注意: 核心代碼-封裝qrcode方法 在 .vue 中的使用注意點(diǎn) 1.隨時(shí)更新 currentTab[tab選中的值] 的值 2.首次二維碼的更新可能有異步問(wèn)題,需要借助 nextTick[鉤子] 部分核心代碼(vue2.0)

    2024年04月29日
    瀏覽(19)
  • 八個(gè)開源免費(fèi)單點(diǎn)登錄(SSO)系統(tǒng)

    八個(gè)開源免費(fèi)單點(diǎn)登錄(SSO)系統(tǒng)

    使用SSO服務(wù)可以提高多系統(tǒng)使用的用戶體驗(yàn)和安全性,用戶不必記憶多個(gè)密碼、不必多次登錄浪費(fèi)時(shí)間。下面推薦一些市場(chǎng)上最好的開源SSO系統(tǒng),可作為商業(yè)SSO替代。 單點(diǎn)登錄(SSO)是一個(gè)登錄服務(wù)層,通過(guò)一次登錄訪問(wèn)多個(gè)應(yīng)用。使用SSO服務(wù)可以提高多系統(tǒng)使用的用戶體驗(yàn)

    2024年02月04日
    瀏覽(21)
  • Java實(shí)現(xiàn)單點(diǎn)登錄(SSO)詳解:從理論到實(shí)踐

    Java實(shí)現(xiàn)單點(diǎn)登錄(SSO)詳解:從理論到實(shí)踐

    ??謝謝大家捧場(chǎng),祝屏幕前的小伙伴們每天都有好運(yùn)相伴左右,一定要天天開心哦!??? ????作者主頁(yè): 喔的嘛呀???? ?? 帥哥美女們,我們共同加油!一起進(jìn)步!??? 目錄 引言 一、什么是單點(diǎn)登錄(SSO)? 二、SSO的工作原理 三、SSO的具體實(shí)現(xiàn) SSO的核心概念

    2024年04月16日
    瀏覽(21)
  • 基于SAML 2.0對(duì)接阿里云的SSO(單點(diǎn)登錄)

    基于SAML 2.0對(duì)接阿里云的SSO(單點(diǎn)登錄)

    公司使用的阿里云作為公有云,每次員工入職或離職時(shí)同時(shí)需要維護(hù)兩套賬號(hào)(一套內(nèi)部賬號(hào),一套阿里云RAM賬號(hào)),為了讓用戶能夠使用內(nèi)部賬號(hào)能訪問(wèn)阿里云,所以決定對(duì)接阿里云的SSO 主流程介紹 用戶訪問(wèn)阿里云 阿里云調(diào)轉(zhuǎn)至公司內(nèi)部的SSO(單點(diǎn)登錄) 公司內(nèi)部SSO讓用戶

    2023年04月10日
    瀏覽(19)
  • SaaSpace:8款最好的免費(fèi)SSO單點(diǎn)登錄軟件工具

    我們確實(shí)花了很多時(shí)間用于登錄。 這不僅耗時(shí),而且往往是一種令人羞愧的經(jīng)歷。(例如,你經(jīng)常問(wèn)自己,“這個(gè)密碼中的\\\'B\\\'是大寫還是小寫?”,然后反思“我失去了記憶嗎?”) 根據(jù)一些報(bào)告的研究,單點(diǎn)登錄軟件為努力跟蹤其無(wú)數(shù)不同登錄次數(shù)(平均191次)的企業(yè)用

    2024年02月06日
    瀏覽(35)
  • 深入理解SSO原理,項(xiàng)目實(shí)踐使用一個(gè)優(yōu)秀開源單點(diǎn)登錄項(xiàng)目(附源碼)

    深入理解SSO原理,項(xiàng)目實(shí)踐使用一個(gè)優(yōu)秀開源單點(diǎn)登錄項(xiàng)目(附源碼)

    深入理解SSO原理,項(xiàng)目實(shí)踐使用一個(gè)優(yōu)秀開源單點(diǎn)登錄項(xiàng)目(附源碼)。 一、簡(jiǎn)介 單點(diǎn)登錄(Single Sign On),簡(jiǎn)稱為 SSO。 它的解釋是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問(wèn)所有相互信任的應(yīng)用系統(tǒng)。 ? 所謂一次登錄,處處登錄。同樣一處退出,處處退出。 ?

    2024年02月11日
    瀏覽(34)
  • AWS多賬戶單點(diǎn)登錄 IAM Identity Center(AWS SSO)

    AWS多賬戶單點(diǎn)登錄 IAM Identity Center(AWS SSO)

    需求場(chǎng)景 多個(gè)aws賬戶,登陸麻煩且不安全,SSO單點(diǎn)功能并且外部身份提供者 — 如果您要管理外部身份提供者(IdP)(例如 Okta 或 Active Directory)中的用戶。 官方文檔:https://docs.aws.amazon.com/zh_cn/singlesignon/latest/userguide/getting-started.html 最佳實(shí)踐:https://aws.amazon.com/cn/blogs/securi

    2024年02月12日
    瀏覽(22)
  • 基于flask-oidc的OIDC協(xié)議授權(quán)碼模式單點(diǎn)登錄SSO實(shí)現(xiàn)

    關(guān)于SSO單點(diǎn)登錄、OIDC協(xié)議、授權(quán)碼模式等相關(guān)概念詳見基于OIDC的SSO單點(diǎn)登錄文章內(nèi)容 應(yīng)用注冊(cè): 在提供OIDC服務(wù)的認(rèn)證系統(tǒng)中注冊(cè)應(yīng)用信息 授權(quán)流程: 攜帶由應(yīng)用生成的 state (防CSRF跨域信息)和在認(rèn)證系統(tǒng)中注冊(cè)的應(yīng)用信息重定向請(qǐng)求認(rèn)證系統(tǒng)的授權(quán)服務(wù) 授權(quán)服務(wù)重定向到登

    2024年02月13日
    瀏覽(23)
  • 【springboot+vue項(xiàng)目(十四)】基于Oauth2的SSO單點(diǎn)登錄(一)整體流程介紹

    【springboot+vue項(xiàng)目(十四)】基于Oauth2的SSO單點(diǎn)登錄(一)整體流程介紹

    場(chǎng)景:現(xiàn)在有一個(gè)前后端分離的系統(tǒng),前端框架使用vue-element-template,后端框架使用springboot+springSecurity+JWT+Redis(登錄部分)現(xiàn)在需要接入到 已經(jīng)存在的第三方基于oauth2.0的非標(biāo)準(zhǔn)接口 統(tǒng)一認(rèn)證系統(tǒng)。 ?溫馨提示:如果是接入到 基于oauth2.0的 標(biāo)準(zhǔn)接口的認(rèn)證服務(wù)系統(tǒng),可以直

    2024年02月19日
    瀏覽(15)
  • SpringBoot+CAS整合服務(wù)端和客戶端實(shí)現(xiàn)SSO單點(diǎn)登錄與登出快速入門上手

    SpringBoot+CAS整合服務(wù)端和客戶端實(shí)現(xiàn)SSO單點(diǎn)登錄與登出快速入門上手

    教學(xué)講解視頻地址:視頻地址 因?yàn)镃AS支持HTTP請(qǐng)求訪問(wèn),而我們是快速入門上手視頻,所以這期教程就不教大家如何配置HTTPS了,如果需要使用HTTPS,可以參考其他博客去云服務(wù)器申請(qǐng)證書或者使用JDK自行生成一個(gè)證書。 下載CAS Server(直接下載壓縮包就可以) 這里我們用的是

    2024年02月02日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包