日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】ADFS 概念与基本开发介绍

發(fā)布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】ADFS 概念与基本开发介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

(如您轉(zhuǎn)載本文,必須標(biāo)明本文作者及出處。如有任何疑問請與我聯(lián)系?me@nap7.com)

ADFS 相關(guān)開發(fā)技術(shù)的中文資料相對匱乏,之前在弄這個東西的時候搞的比較辛苦,因此總結(jié)此文檔,以解后人之憂。

本文會首先介紹與聯(lián)合身份驗證有關(guān)的概念及相關(guān)的系統(tǒng)設(shè)計意圖,隨后會對 ADFS 聯(lián)合身份驗證的配置過程、結(jié)構(gòu)及處理流程進行闡述。然后會基于已有的系統(tǒng)提出一個支持多 ADFS 聯(lián)合身份驗證的改進實例,并對其結(jié)構(gòu)及處理流程進行闡述。最后會對開發(fā)過程中所遭遇的一些問題進行介紹。真誠希望本文能夠幫助讀者較快地了解聯(lián)合身份驗證的相關(guān)知識。

一 ADFS 基本概念與設(shè)計意圖

1 基本概念闡述

1.1 聯(lián)合身份驗證

聯(lián)合身份驗證(Federated Identity)是一種用戶身份的驗證方式,這種驗證方式通過把用戶身份的驗證過程與被該用戶訪問的服務(wù)提供商(SP,Service Provider,如我們自己的站點)進行邏輯分離,在保證用戶身份信息被隔離在用戶所屬系統(tǒng)的內(nèi)部的同時,為受信任的服務(wù)提供商提供所需要的用戶信息。
當(dāng)服務(wù)提供商需要對用戶的身份進行驗證時,會將相關(guān)的驗證過程轉(zhuǎn)交給身份驗證提供方(IdP,Identity Provider,如AvePoint域的 AD FS 驗證服務(wù)),當(dāng)用戶經(jīng)由身份驗證提供方成功登錄后,身份驗證提供方會將用戶的身份驗證憑據(jù)和用戶相關(guān)的信息返還給服務(wù)提供商,從而實現(xiàn)服務(wù)提供商對于用戶身份的驗證,以及對于用戶信息獲取。
常見的聯(lián)合身份驗證的實現(xiàn)有SAML、OAuth、OpenID等方式,本文主要介紹的是基于Claims和SAML 2.0的 AD FS 聯(lián)合身份驗證。在基于Claims的聯(lián)合身份驗證的過程中,當(dāng)身份驗證提供方完成對于用戶身份的驗證,返還用戶的相關(guān)信息時,其數(shù)據(jù)信息實體被稱之為令牌(Token),其中的相關(guān)信息字段被稱為聲明(Claims)。令牌保證了用戶身份的真實性,并包含了實用信息,其結(jié)構(gòu)如下圖所示。

?

1.2 基于Claims的身份驗證簡述

基于傳統(tǒng)的開發(fā)方式,創(chuàng)建一個應(yīng)用程序(即服務(wù)提供商)并保證多種身份驗證機制可以協(xié)調(diào)工作并不是一件簡單的工作。首先,我們需要決定對于特定的應(yīng)用程序,哪一種身份驗證技術(shù)最為合適。如果應(yīng)用程序允許用戶通過不同的方式進行訪問,例如,允許同屬一個組織下的域用戶群體,或者跨越不同組織的多個域下的域用戶群體,再或者同時允許這些域用戶及傳統(tǒng)的注冊用戶通過公網(wǎng)對應(yīng)用程序進行訪問,那么使用傳統(tǒng)的單一的身份驗證機制是完全不能滿足這些需求的。在這些需求下,應(yīng)用程序應(yīng)該以直接經(jīng)由用戶所屬的組織或系統(tǒng)處獲取對應(yīng)用戶驗證的結(jié)果。同時,也需要從一個AD目錄服務(wù)或其它某處查詢到用戶相關(guān)的信息,并且保證這些信息可以在公網(wǎng)上,能夠以統(tǒng)一的方式進行傳遞。
基于Claims的身份驗證(Claims-based identity)為我們提供了這種統(tǒng)一的身份驗證方式,讓不同的服務(wù)提供商可以通過公網(wǎng),獲得所需要的保存在用戶所屬組織內(nèi)部的關(guān)于用戶的驗證信息。其基本流程如下圖所示。

首先,用戶通過客戶端(如瀏覽器),訪問服務(wù)提供商(如圖中①過程,相對于身份驗證提供方也可以稱其為信賴方RP)。信賴方向身份驗證提供方提出驗證請求(如圖中②所示),身份驗證提供方會要求用戶輸入登陸憑據(jù)(如用戶名及驗證碼)。在通過其驗證確認(rèn)后,身份驗證提供方會將驗證成功的消息及該用戶相關(guān)的數(shù)據(jù)信息以令牌的方式交還給信賴方(如圖中③所示)。

以我的站點與某第三方聯(lián)合身份驗證系統(tǒng)的驗證流程為例,其過程也可以用如下的時序圖闡明。

如前所述,我們涉及到兩個新的概念,依賴方與安全令牌服務(wù)。
信賴方(RP,Relying Party)就相當(dāng)于服務(wù)提供商,也就是由我們構(gòu)建的依賴聲明的應(yīng)用程序(如我的網(wǎng)站)。信賴方有時也被稱為“聲明感知應(yīng)用程序”或“基于聲明的應(yīng)用程序”。信賴方作為應(yīng)用程序需要使用由安全令牌服務(wù)(STS)所頒發(fā)的令牌,并從令牌中提取聲明,從而進行用戶身份的驗證和用戶信息的獲取。
安全令牌服務(wù)(STS,Security Token Service),信賴方所使用的令牌的創(chuàng)建者就是安全令牌服務(wù)。它作為一個Web服務(wù)存在。STS可以由我們自行構(gòu)建,也可以應(yīng)用已有的實現(xiàn),AD聯(lián)合身份驗證服務(wù)(AD FS)就是一個STS的實現(xiàn)。
為了充分利用基于Claims的身份驗證機制,我們將會使用由微軟提供的用于支撐應(yīng)用程序?qū)崿F(xiàn)聯(lián)合認(rèn)證功能的可供依賴的基礎(chǔ)架構(gòu)。這些技術(shù)包括:AD聯(lián)合身份驗證服務(wù)(AD FS,Active Directory Federation Services),與Windows身份驗證基礎(chǔ)類庫(WIF,Windows Identity Foundation)。

1.3 AD FS

Active Directory聯(lián)合身份驗證服務(wù)(AD FS,Active Directory Federation Services)是由微軟自Windows Server 2003 R2起,在各個Server版本操作系統(tǒng)中提供的一個軟件組件,其最新版本是集成在Windows Server 2012 R2的AD FS 3.0。
AD FS 使用基于Claims的訪問控制驗證模型來實現(xiàn)聯(lián)合認(rèn)證。它提供 Web 單一登錄技術(shù),這樣只要在會話的有效期內(nèi),就可對一次性的對用戶所訪問的多個Web應(yīng)用程序進行驗證。
我們可以將 AD FS 理解為組織域內(nèi)與公網(wǎng)之外用戶橋梁。我們編寫的應(yīng)用程序作為Internet服務(wù)在公網(wǎng)部署,當(dāng)程序需要對域內(nèi)的用戶進行驗證時,就可以委托 AD FS 服務(wù)器進行驗證。 AD FS 服務(wù)提供了一個 AD FS 聯(lián)合服務(wù)器代理,這類似于一個只提供了登錄界面的應(yīng)用程序,我們將相關(guān)域用戶的驗證過程委托給該程序進行處理,該程序?qū)⑻崾居脩糨斎腧炞C憑據(jù)(這可以是在瀏覽器中彈出登錄提示框或跳轉(zhuǎn)到一個登錄頁面的形式),隨后其將所獲取的憑據(jù)傳遞給AD FS聯(lián)合身份驗證服務(wù)。 AD FS 作為AD的一部分有權(quán)限(其擁有AD域管理員的權(quán)限)使用AD DS的標(biāo)準(zhǔn)方式認(rèn)證一個域內(nèi)的用戶,如果認(rèn)證成功,AD FS 將會依據(jù)應(yīng)用程序預(yù)先設(shè)定的信息需求,以Claims的形式將安全令牌信息返還給我們的應(yīng)用程序。

1.4 AD FS 聯(lián)合服務(wù)代理

如前所述,AD FS 聯(lián)合服務(wù)代理是運行用戶通過Internet進行 AD FS 的客戶端身份驗證憑據(jù)采集的接口,它會將獲取到的憑據(jù)傳遞給聯(lián)合身份驗證服務(wù)器進行驗證處理。

1.5 WIF

Windows身份驗證基礎(chǔ)類庫(WIF,Windows Identity Foundation)是一組.NET Framework類,它為我們提供了實現(xiàn)基于聲明標(biāo)識的應(yīng)用程序的基礎(chǔ)框架。在具體的實現(xiàn)過程中,主要利用了其中的WSFederation Authentication Module(WS-FAM)HTTP模塊。

1.6 概念總結(jié)

以上給出的相關(guān)概念層層遞進,相似的概念在不同領(lǐng)域?qū)哟斡兄煌姆Q謂,為了方便理解,下面對這些概念的關(guān)系進行簡單的總結(jié)。

AD?FS中的稱謂SAML中的稱謂概念簡述
Security Token 安全令牌Assertion 聲明作為安全信息的封裝,用于描述一個用戶的信息,它在聯(lián)合身份驗證的訪問請求期間被創(chuàng)建。
Claims Provider 聲明提供方Identity Provider (IdP) 身份驗證提供方為用戶創(chuàng)建安全令牌的聯(lián)合身份認(rèn)證程序。
Relying Party 信賴方Service Provider (SP) 服務(wù)提供商收到聯(lián)合身份驗證服務(wù)信賴的請求并使用安全令牌的應(yīng)用程序。
Claims 聲明Assertion attributes 屬性聲明在安全令牌中的關(guān)于用戶的數(shù)據(jù)信息。

下圖對相關(guān)的領(lǐng)域結(jié)構(gòu)進行了劃分。

2 設(shè)計意圖

2.1 登錄模塊概述

基于注冊用戶的賬戶管理方式并不能很好地適用于商業(yè)系統(tǒng)的使用場景。例如,當(dāng)系統(tǒng)相關(guān)管理人員離開組織后,仍需其他的管理者對系統(tǒng)內(nèi)相關(guān)聯(lián)的賬戶信息進行進一步的維護。對于組織賬戶的信息應(yīng)該交由組織的域服務(wù)器進行統(tǒng)一的管理及驗證。因此,我們需要為系統(tǒng)添加獨立的基于AD FS的聯(lián)合身份驗證。從而使系統(tǒng)既支持傳統(tǒng)的注冊用戶,又支持域用戶的使用。當(dāng)用戶登錄時,系統(tǒng)會檢查用戶賬戶的后綴名,如果賬戶名稱以someone@nap7.com形式輸入,或者采用nap7\someone的形式,則認(rèn)定為域用戶,系統(tǒng)將會自動跳轉(zhuǎn)到AD FS聯(lián)合身份驗證服務(wù)器,進行用戶身份的驗證,如果驗證通過,其使用方式與正常的注冊用戶完全一致。

2.2 聯(lián)合身份驗證的好處

聯(lián)合身份驗證的主要優(yōu)勢是:
(1)互聯(lián)網(wǎng)現(xiàn)有的服務(wù)提供商不計其數(shù),如果用戶需要在每個服務(wù)提供商處都申請賬戶,那對于用戶自身來講無疑是一個巨大的負擔(dān),用戶可能有幾十個需要維護的身份驗證信息,為了訪問不同的服務(wù)提供商,用戶就必須記住每一個ID和對應(yīng)口令。如果用戶在不同的服務(wù)提供商處使用相同的身份驗證信息,那么一旦有一個站點發(fā)生安全信息的泄露,則可能直接導(dǎo)致用戶在所有服務(wù)提供商處的信息收到嚴(yán)重威脅;
(2)如果用戶以企業(yè)員工的身份訪問服務(wù)提供商,則會涉及到諸如批量用戶導(dǎo)入、身份授權(quán)、刪除授權(quán)及用戶信息等問題。例如,當(dāng)一個屬于組織O的用戶A以組織員工身份在服務(wù)提供商S處注冊了一個賬戶后,該員工A離開了之前的組織O,這時,這個用戶A就不應(yīng)該繼續(xù)在服務(wù)S處代表該組織O。此時需要在服務(wù)提供商S處將該用戶的訪問權(quán)限清除,而這一操作本應(yīng)由組織O來完成,對于未使用聯(lián)合身份驗證的系統(tǒng)來說,這是很難實現(xiàn)的;
(3)可以實現(xiàn)單點登錄(SSO)。

2.3 擴展:如何支持多個AD域

如果我們的項目只是針對公司內(nèi)部的成員使用,繼承單個ADFS是足夠的,但是,當(dāng)項目作為云端服務(wù),針對的用戶群體可能是很多個企業(yè)級的用戶。因此,就產(chǎn)生了對于多AD FS域獨立驗證的需求?;谝延械膯蜛D FS的實現(xiàn),本文稍后會提供一個支持多個AD域AD FS的聯(lián)合身份驗證服務(wù)的實現(xiàn)示例。
如果需要實現(xiàn)多個域的域用戶登錄,首先需要將相關(guān)域的AD FS配置信息保存在系統(tǒng)的數(shù)據(jù)庫中,并提供相應(yīng)方法,可以解析出用戶所對應(yīng)的域。這可以通過在用戶信息表中保存用戶對應(yīng)的域配置,也可以通過用戶的名稱來獲取對應(yīng)配置。在獲取相應(yīng)的AD FS配置后,我們需要通過WIF所提供的API及相關(guān)事件,對當(dāng)前用戶的AD FS配置信息及完成驗證后所需要的證書指紋信息進行設(shè)置。設(shè)置完成后,系統(tǒng)將會跳轉(zhuǎn)到對應(yīng)的AD FS登錄頁面,從而對用戶的身份進行驗證。驗證成功后,跳轉(zhuǎn)回系統(tǒng),完成Security Token的驗證。完成這些操作后,系統(tǒng)將生成用戶的Cookie,完成登陸流程。

?

參考文檔:

http://nap7.com/adfs-introduce-and-develop/

其他:

https://blog.51cto.com/gaowenlong/1722479

總結(jié)

以上是生活随笔為你收集整理的【转】ADFS 概念与基本开发介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。