SSO統(tǒng)一身份認(rèn)證——SSO都有哪些常用的協(xié)議
單點(diǎn)登錄(SingleSignOn,SSO),就是通過用戶的一次性鑒別登錄。當(dāng)用戶在身份認(rèn)證服務(wù)器上登錄一次以后,即可獲得訪問單點(diǎn)登錄系統(tǒng)中其他關(guān)聯(lián)系統(tǒng)和應(yīng)用軟件的權(quán)限,同時(shí)這種實(shí)現(xiàn)是不需要管理員對(duì)用戶的登錄狀態(tài)或其他信息進(jìn)行修改的,這意味著在多個(gè)應(yīng)用系統(tǒng)中,用戶只需一次登錄就可以訪問所有相互信任的應(yīng)用系統(tǒng)。這種方式減少了由登錄產(chǎn)生的時(shí)間消耗,輔助了用戶管理,是目前比較流行的。
單點(diǎn)登錄的使用場(chǎng)景有很多,C/S、B/S架構(gòu)的系統(tǒng)均可使用,通常是支持快速配置使用。
業(yè)內(nèi)目前實(shí)現(xiàn)SSO的方式有很多種,在ToC場(chǎng)景下互聯(lián)網(wǎng)公司通常使用的是OAuth2協(xié)議,而ToB場(chǎng)景下大家通常是囊括百家,既支持OAuth2又支持CAS,還滴支持LDAP。其造成的原因主要是因?yàn)樵赥oB場(chǎng)景下需要對(duì)接SSO的系統(tǒng)通常僅支持某個(gè)協(xié)議,而這類系統(tǒng)又不是同一個(gè)協(xié)議導(dǎo)致。
下面我對(duì)于目前了解的各種協(xié)議的匯總,便于大家參考

1、OAuth2.0
OAuth2.0是OAuth協(xié)議的延續(xù)版本,但不向前兼容OAuth 1.0(即完全廢止了OAuth1.0)。 OAuth 2.0關(guān)注客戶端開發(fā)者的簡(jiǎn)易性。要么通過組織在資源擁有者和HTTP服務(wù)商之間的被批準(zhǔn)的交互動(dòng)作代表用戶,要么允許第三方應(yīng)用代表用戶獲得訪問的權(quán)限。同時(shí)為Web應(yīng)用,桌面應(yīng)用和手機(jī),和起居室設(shè)備提供專門的認(rèn)證流程。2012年10月,OAuth 2.0協(xié)議正式發(fā)布為RFC 6749 。
2、CAS
CAS是Central Authentication Service的縮寫,中央認(rèn)證服務(wù),一種獨(dú)立開放指令協(xié)議。CAS 是 耶魯大學(xué)(Yale University)發(fā)起的一個(gè)開源項(xiàng)目,旨在為 Web 應(yīng)用系統(tǒng)提供一種可靠的單點(diǎn)登錄方法,CAS 在 2004 年 12 月正式成為 JA-SIG 的一個(gè)項(xiàng)目。
3、SAML 2.0
安全斷言標(biāo)記語言(英語:Security Assertion Markup Language,簡(jiǎn)稱SAML,發(fā)音sam-el)是一個(gè)基于XML的開源標(biāo)準(zhǔn)數(shù)據(jù)格式,它在當(dāng)事方之間交換身份驗(yàn)證和授權(quán)數(shù)據(jù),尤其是在身份提供者和服務(wù)提供者之間交換。SAML是OASIS安全服務(wù)技術(shù)委員會(huì)的一個(gè)產(chǎn)品,始于2001年。其最近的主要更新發(fā)布于2005年,但協(xié)議的增強(qiáng)仍在通過附加的可選標(biāo)準(zhǔn)穩(wěn)步增加。
SAML解決的最重要的需求是網(wǎng)頁瀏覽器單點(diǎn)登錄(SSO)。單點(diǎn)登錄在內(nèi)部網(wǎng)層面比較常見,(例如使用Cookie),但將其擴(kuò)展到內(nèi)部網(wǎng)之外則一直存在問題,并使得不可互操作的專有技術(shù)激增。(另一種近日解決瀏覽器單點(diǎn)登錄問題的方法是OpenID Connect協(xié)議)
4、OpenID Connect (OIDC)
What is OpenID Connect?
OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server, as well as to obtain basic profile information about the End-User in an interoperable and REST-like manner.
OpenID Connect allows clients of all types, including Web-based, mobile, and JavaScript clients, to request and receive information about authenticated sessions and end-users. The specification suite is extensible, allowing participants to use optional features such as encryption of identity data, discovery of OpenID Providers, and session management, when it makes sense for them.
See https://openid.net/connect/faq/ for a set of answers to Frequently Asked Questions about OpenID Connect.
How is OpenID Connect different than OpenID 2.0?
OpenID Connect performs many of the same tasks as OpenID 2.0, but does so in a way that is API-friendly, and usable by native and mobile applications. OpenID Connect defines optional mechanisms for robust signing and encryption. Whereas integration of OAuth 1.0a and OpenID 2.0 required an extension, in OpenID Connect, OAuth 2.0 capabilities are integrated with the protocol itself.
5、WebAuthn
什么是Webauthn?
WebAuthn(Web 身份驗(yàn)證)是由萬維網(wǎng)聯(lián)盟(W3C)發(fā)布的 Web 標(biāo)準(zhǔn)。WebAuthn 是 FIDO 聯(lián)盟指導(dǎo)下的 FIDO2 項(xiàng)目的核心組成部分。該項(xiàng)目的目標(biāo)是標(biāo)準(zhǔn)化用戶對(duì)基于 Web 的應(yīng)用程序和服務(wù)的公鑰認(rèn)證的接口。
WebAuthn全稱Web Authentication API 使用asymmetric (public-key) cryptography (不對(duì)稱加密)替代密碼或SMS文本在網(wǎng)站上注冊(cè),驗(yàn)證, second-factor authentication(雙因素驗(yàn)證). 解決了phishing(釣魚), data breaches(數(shù)據(jù)破壞), SMS 文本攻擊,其他雙因素驗(yàn)證等重大安全問題. 同時(shí)顯著提高易用性(因?yàn)橛脩舨槐毓芾碓S多越來越復(fù)雜的密碼)。
WebAuthn支持的生物驗(yàn)證方式包括:筆記本電腦的指紋識(shí)別和面部識(shí)別、安卓設(shè)備的指紋識(shí)別。追求高安全的用戶還可額外購買兼容FIDO的實(shí)體安全密鑰,F(xiàn)IDO完整支持包括:指紋識(shí)別、面部識(shí)別、虹膜識(shí)別、聲音識(shí)別、實(shí)體密鑰(USB連接、藍(lán)牙連接、NFC連接),支持設(shè)備系統(tǒng)包括:Windows 10、Linux、Mac OS、Android、iOS、智能手表等。
以上內(nèi)容均引用至互聯(lián)網(wǎng),如有問題請(qǐng)私密我。
上述我對(duì)于目前存在的一些協(xié)議的整理,便于大家進(jìn)行初步熟悉,后續(xù)會(huì)對(duì)于每個(gè)協(xié)議進(jìn)行深入的解析并補(bǔ)充我自己的理解,請(qǐng)大家持續(xù)關(guān)注。
本文聲明

知識(shí)共享許可協(xié)議 本作品由 cn華少 采用 知識(shí)共享署名-非商業(yè)性使用 4.0 國際許可協(xié)議 進(jìn)行許可。