什麼是 ADFS(活動目錄聯合服務)?
所以有人告訴我,我們的 PHP 應用程序可能需要支持使用 ADFS 的身份驗證。
**1. 對於非 Microsoft 人員,什麼是 ADFS? 2. 它與 LDAP 之類的東西有何不同? 3. 它是如何工作的?對 ADFS 伺服器的典型請求中將包含哪些類型的資訊?它是為身份驗證和授權而設計的嗎? 4. ADFS 伺服器是否通常可以從 Internet 訪問(而企業 AD 域控制器則不能)?
我試過閱讀一些 Technet 文件,但裡面全是微軟的說法,沒有太大幫助。
維基百科更好(見下文),但也許一些 ServerFault 社區可以填補一些空白。
**Active Directory 聯合服務 (ADFS)**是由 Microsoft 開發的軟體組件,可以安裝在 Windows Server 作業系統上,為使用者提供對跨組織邊界的系統和應用程序的單點登錄訪問。它使用基於聲明的訪問控制授權模型來維護應用程序安全性並實施聯合身份。
基於聲明的身份驗證是基於一組包含在受信任令牌中的關於使用者身份的聲明來驗證使用者的過程。
在 ADFS 中,通過在兩個安全領域之間建立信任,在兩個組織之間建立身份聯合。一側(帳戶端)的聯合伺服器通過 Active Directory 域服務中的標準方式對使用者進行身份驗證,然後發出一個令牌,其中包含有關使用者的一系列聲明,包括其身份。另一方面,在資源端,另一個聯合伺服器驗證令牌並為本地伺服器頒發另一個令牌以接受聲明的身份。這允許系統向屬於另一個安全領域的使用者提供對其資源或服務的受控訪問,而無需使用者直接向系統進行身份驗證,也無需兩個系統共享使用者身份或密碼的數據庫。
在實踐中,使用者通常認為這種方法如下:
- 使用者登錄到他們的本地 PC(就像他們通常在早上開始工作時那樣)
- 使用者需要在合作夥伴公司的外聯網網站上獲取資訊——例如獲取定價或產品詳細資訊
- 使用者導航到合作夥伴公司外聯網站點 - 例如:http ://example.com
- 合作夥伴網站現在不需要輸入任何密碼 - 而是使用 AD FS 將使用者憑據傳遞到合作夥伴 Extranet 站點
- 使用者現在已登錄合作夥伴網站並可以與“已登錄”的網站進行互動
來自https://en.wikipedia.org/wiki/Active_Directory_Federation_Services
**
**>
對於非 Microsoft 人員,什麼是 ADFS?
ADFS 是 Microsoft 的單點登錄和基於 Web 的身份驗證的解決方案。
它主要用於提供一組憑據,這些憑據可以訪問不一定託管在同一域中的各種站點。
它與 LDAP 之類的東西有何不同?
LDAP:
- 在埠 389(或 LDAPS 的埠 636)上使用 TCP/UDP 進行通信
- 包含用於搜尋/檢索/添加/刪除/修改使用者、配置文件和其他目錄條目的命令
- 不能直接由 Web 瀏覽器執行,但是 HTTP 身份驗證可以使用 Apache 之類的東西轉換為 LDAP
mod_authnz_ldap
。- 用於第三方網站認證時,需要向第三方提供使用者名和密碼,安全性不理想。
- 更像是一個開放標準,並且有許多 Linux 實現。
ADFS:
- 更好地為 Web 設計,因為它通過標準 HTTPS 進行通信
- 遵循與 OAuth 類似(但不准確)的更安全流程,其中原始使用者名/密碼直接提供給組織的 ADFS 伺服器(或代理,但不是第三方),如果有效,則返回一個唯一令牌,該令牌可以用於訪問第三方網站。
- 儘管它確實使用了一些開放標準(HTTPS、SAML 等),但它是特定於 Microsoft 的,並且需要僅在 Windows 伺服器上執行的 Internet 資訊服務 (IIS)。
另請參閱有關該主題的此答案。
它是如何工作的?對 ADFS 伺服器的典型請求中將包含哪些類型的資訊?它是為身份驗證和授權而設計的嗎?
它通過擁有一個託管 ADFS / ADFS 代理伺服器的站點(站點 A)來工作,該伺服器可以訪問憑據(通常通過與 Active Directory 域控制器通信)。然後在需要通過 ADFS 進行身份驗證的其他站點(站點 B 和 C)之間獲得信任。
當使用者嘗試在其瀏覽器中訪問站點 B 時,該站點會將使用者重定向到 ADFS 代理網站(站點 A),該網站會詢問他們的使用者名和密碼,對其進行身份驗證,返回一組用於記住它們的 cookie,並重定向它們連同訪問令牌一起返回站點 B。
如果使用者隨後嘗試訪問站點 C,他們還將被重定向到站點 A,以便從 ADFS 代理網站進行身份驗證。如果存在正確的 cookie,使用者將無需再次輸入密碼,但會立即使用令牌重定向回站點 C。
出於授權目的,可以為使用者配置 ADFS 的特定聲明(或權限)。所以它可以同時扮演這兩個角色。(注意身份驗證和授權之間的區別。)
有些人不喜歡使用它進行授權,而是將權限管理保留在第三方網站中。明顯的缺點是站點 A 和 B 都需要跟踪使用者帳戶,而在 ADFS 處理兩者的情況下,只有 ADFS 需要了解使用者。
ADFS 伺服器是否通常可以從 Internet 訪問(而企業 AD 域控制器則不能)?
是的,幾乎總是。ADFS 基於它將主要用於網站身份驗證的概念。並且是圍繞 IIS 建構的。
ADFS 代理站點是通常可從 Internet 訪問的站點。但是 ADFS 本身不是。ADFS 通常是獨立於 ADFS 代理的伺服器。
- ADFS 伺服器
連結到憑據的伺服器,並具有聲明配置和信任。一般不對外公開。
- ADFS 代理伺服器
伺服器託管 IIS 實例,該實例具有需要身份驗證的網站的登錄頁面。需要身份驗證時與 ADFS 通信。一般可公開訪問。**