您好,登錄后才能下訂單哦!
最近為國內(nèi)×××設(shè)計新系統(tǒng)與現(xiàn)有系統(tǒng)的集成。關(guān)鍵之一在于登錄認(rèn)證。在了解現(xiàn)有系統(tǒng)的非標(biāo)接口過程中不出意外地遇到了些困難。
類比個例子,現(xiàn)有系統(tǒng)是個插線板,要求新系統(tǒng)插頭標(biāo)準(zhǔn)如下:
三平頭,頭長18mm寬9mm厚2mm, 三頭中心點距圓心10mm, 上頭平行圓心到頭心線,下二頭垂直圓心到頭心線。
上述接口是美標(biāo),歐標(biāo),英標(biāo),或者中國標(biāo)準(zhǔn)?
“什么?都不是?嗯……”
如此的例子在企業(yè)級應(yīng)用的登錄認(rèn)證集成過程中總是會遇到的。IT發(fā)達的國家整體情況好很多,因為大多數(shù)實現(xiàn)都采用了業(yè)界通行的標(biāo)準(zhǔn)。從而系統(tǒng)的擴展和集成往往會少一些阻礙。采用通用標(biāo)準(zhǔn)協(xié)議和成熟技術(shù)實現(xiàn)就如同上述的插頭一樣,安全性、通用性、可擴展性、可維護性,諸多好處是毋庸置疑的。自造IDM以及相關(guān)協(xié)議就是重新發(fā)明輪子。
那么什么是IDM? 本文將介紹相關(guān)的一些概念和協(xié)議,并幫助讀者理解它的復(fù)雜性。
什么是IDM
IDM (Identity Management) ,也有稱IAM (Identity & Access Management),意為身份認(rèn)證管理。狹義地講管理登錄的系統(tǒng)是IDM系統(tǒng)。概括地講,在計算機安全領(lǐng)域,IDM是指安全和業(yè)務(wù)規(guī)范管理,以確保正確的人,在正確的時間,以正確的理由,訪問正確的資源。
隨著SaaS服務(wù)的興起,以往大而復(fù)雜的應(yīng)用系統(tǒng)逐漸被分散的功能簡單的多個小應(yīng)用所取代?;谝苿釉O(shè)備的應(yīng)用普及又使得新的特定用途應(yīng)用數(shù)量迅速增長,從而加速了這一趨勢。在應(yīng)用系統(tǒng)數(shù)量增加的環(huán)境下,系統(tǒng)間的集成,安全,單點登錄,訪問控制等需求變得更為明顯,雖然其實這些需求從來都存在。
IDM系統(tǒng)涵蓋的管理內(nèi)容比較多。本文著重登錄與認(rèn)證相關(guān)的部分。這也是系統(tǒng)登錄集成對接的重要部分。在介紹諸多繁復(fù)的技術(shù)概念之前,我先以一個非技術(shù)的場景幫助讀者理解將要介紹的概念。
飛機場的流程
在去機場坐國際航班的過程中,大概是這樣的:先去拿護照簽到(check-in)打印登機牌,出關(guān),安檢,候機,驗證登機牌并登機。這是一個多系統(tǒng)參與的認(rèn)證過程。
系統(tǒng)角色
(不同的協(xié)議規(guī)范里對系統(tǒng)的名稱各不相同。這里我們先采用SAML協(xié)議里的名稱)
ID提供者(IDP, Identity Provider,或issuer):負(fù)責(zé)提供ID服務(wù)。上述機場例子中,護照的識別和認(rèn)證系統(tǒng)是IDP。
服務(wù)提供者(SP,Service Provider,或target):負(fù)責(zé)提供最終服務(wù)。上述例子中,飛機是SP。用戶最終要坐飛機。
登錄協(xié)議,認(rèn)證協(xié)議,和令牌
登錄協(xié)議(Sign-in protocol):在機場做這些事情的順序。不按這個順序完成這些步驟將無法登機。
認(rèn)證協(xié)議(authentication protocol):使用護照(而不是×××或其他)驗證身份的方式。
令牌(Token):登機牌。
系統(tǒng)間的交互——協(xié)議和令牌
各系統(tǒng)和用戶客戶端之間的協(xié)同工作靠的是協(xié)議,傳輸?shù)氖橇钆?。下面介紹幾種主流框架協(xié)議:
SAML
SAML (Security Assertion Markup Language)是個簡稱。準(zhǔn)確地說應(yīng)該是SAML協(xié)議(SAML Protocol),或SAML令牌(SAML Token)。
在SAML協(xié)議里,系統(tǒng)被描繪成這樣:
使用的什么登錄協(xié)議?SAML Protocol。
使用的什么認(rèn)證協(xié)議?具體的認(rèn)證協(xié)議并沒有在此表述。例如,基于瀏覽器的一般人證方式可以是Form(用戶名密碼)認(rèn)證。
令牌類型是什么?SAML Token。
安全以及信任是如何保證的?在系統(tǒng)建立之初,需要在SP和IDP間建立互信。例如,通過手動配置的方式在IDP和SP間交換包含證書的metadata。
SAML亦支持Federation。例如,IDP將請求轉(zhuǎn)發(fā)并代理給信任的另一個IDP。在這種時候,我們稱在此鏈中的系統(tǒng)為Federation Provider (FP)。
WS-Federation
說起WS-Federation(或WS-Fed)往往要提及WS-*,WS-Security,和WS-Trust。WS-Federation是WS-*家族一員。WS-*最初是為基于SOAP的Web Service設(shè)計的規(guī)范集。WS-Security是一個安全規(guī)范,是SOAP的擴展。WS-Trust是WS-Security的擴展規(guī)范。WS-Trust描述了系統(tǒng)間交互(登錄協(xié)議)。WS-Federation描述了在多個安全域之間代理和傳遞ID,屬性,和認(rèn)證的規(guī)范。
在WS-Trust看來世界是這樣的:
在WS-Trust里引入了STS(Security Token Service,安全令牌服務(wù))的概念。類似于SAMLp體系里IDP。
使用的什么登錄協(xié)議?WS-Federation/WS-Trust。
使用的什么認(rèn)證協(xié)議?具體認(rèn)證協(xié)議在此有三個例子:username/password,X509 certificate,Kerberos。
令牌類型是什么?在此沒有描述。令牌類型依實現(xiàn)而定。例如,在WS-Federation里可以使用SAML Token作為令牌。
OAuth
對比SAML包含配置和屬性綁定,用于實現(xiàn)全套單點登錄(SSO)、ID聯(lián)合(Federation),OAuth只描述授權(quán)框架,而不是一個認(rèn)證協(xié)議。
OAuth的典型場景是,用戶打開網(wǎng)頁或應(yīng)用,跳轉(zhuǎn)至其他應(yīng)用(例如Facebook,微信),詢問是否允許獲得使用個人的某些(信息)。
OAuth的工作流是這樣的:
OAuth請求的URL樣例如下:
https://nanw.vmwareidentity.asia/oauth3/authorize?response_type=code&client_id=3ab2a37f-4cfd-409c-937c-defd776f4dee&redirect_uri=https://robotypo.appspot.com&resource=robotypo.appspot.com
認(rèn)證
前文介紹了一些登錄協(xié)議,這里簡單列舉一些認(rèn)證協(xié)議:
基于密碼的認(rèn)證方式 - 也許是最古老但是用最多的認(rèn)證方式
RADIUS
Kerberos - 最常見的對Kerberos協(xié)議的實現(xiàn)是微軟的Active Directory。這篇博文用通俗的方式講解了什么是Kerberos:http://vmwareeuc.blog.51cto.com/8606576/1870674
NTLM
IDM成熟產(chǎn)品
有如此多的成熟協(xié)議和技術(shù),雖然是公開并通用的,可是單點登錄(SSO)、跨域聚合(Cross security realms federation)、訪問控制和系統(tǒng)擴展性等集成問題依然是一件復(fù)雜的事情(設(shè)計代價大于實施)。幸好業(yè)界也有很多成熟的產(chǎn)品可以幫助解決這一困境。VMware vIDM,Okta,Microsoft ADFS,Shibboleth, CAS,Ping Identity, OpenAM, Keycloak,等等等等。
作者簡介:王南,China EUC Solution Staff Engineer
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。