設定 AD FS 以驗證儲存在 Windows Server 2016 或更新版本中 LDAP 目錄中的使用者
下列主題描述讓您的 AD FS 基礎結構能夠驗證身分識別儲存在輕量型目錄存取通訊協定 (LDAP) v3 相容目錄的使用者所需的設定。
在許多組織中,身分識別管理解決方案包含 Active Directory、AD LDS 和第三方 LDAP 目錄的組合。 新增 AD FS 支援來驗證儲存在 LDAP v3 相容目錄中的使用者,無論您的使用者身分識別儲存在哪裡,您都可以受益於整個企業級 AD FS 功能集。 AD FS 支援任何 LDAP v3 相容目錄。
注意
有些 AD FS 功能包括單一登入 (SSO)、裝置驗證、彈性條件式存取政策、透過整合 Web 應用程式 Proxy 支援隨時隨地工作型態,以及與 Microsoft Entra 的無縫聯盟,反而讓您與您的使用者得以利用雲端,包括 Office 365 和其他 SaaS 應用程式。 如需詳細資訊,請參閱 Active Directory Federation Services 概觀。
若要讓 AD FS 驗證 LDAP 目錄中的使用者,您必須建立 本機宣告提供者信任,將此 LDAP 目錄連線到 AD FS 伺服器陣列。 本機宣告提供者信任是代表 AD FS 伺服器陣列中 LDAP 目錄的信任物件。 本機宣告提供者信任物件由各種識別碼、名稱與規則組成,可讓本機同盟服務識別此 LDAP 目錄。
您可以藉由新增多個 本機宣告提供者信任,在相同的 AD FS 伺服器陣列中支援多個 LDAP 目錄,每個目錄都有自己的設定。 此外,AD FS 所在的樹系不信任的 AD DS 樹系也可以模型化為本機宣告提供者信任。 您可以使用 Windows PowerShell 建立本機宣告提供者信任。
LDAP 目錄 (本機宣告提供者信任) 可以與相同 AD FS 伺服器上的 AD 目錄 (宣告提供者信任) 共存,因此,AD FS 的單一執行個體能夠驗證 AD 目錄和非 AD 目錄中儲存的使用者並授與其存取權。
只有表單型驗證支援從 LDAP 目錄驗證使用者。 不支援使用憑證型和整合式 Windows 驗證來驗證 LDAP 目錄中的使用者。
AD FS 支援的所有被動授權通訊協定,包括 SAML、WS-Federation 和 OAuth,也支援儲存在 LDAP 目錄中的身分識別。
儲存在 LDAP 目錄中的身分識別也支援 WS-Trust 使用中授權通訊協定。
設定 AD FS 驗證 LDAP 目錄中儲存的使用者
若要設定 AD FS 伺服器陣列來驗證 LDAP 目錄中的使用者,您可以完成下列步驟:
首先,使用 New-AdfsLdapServerConnection Cmdlet 設定 LDAP 目錄的連線:
$DirectoryCred = Get-Credential $vendorDirectory = New-AdfsLdapServerConnection -HostName dirserver -Port 50000 -SslMode None -AuthenticationMethod Basic -Credential $DirectoryCred
注意
建議您為每個要連線的 LDAP 伺服器建立新的連線物件。 AD FS 可以連線到多個複本 LDAP 伺服器,並在特定 LDAP 伺服器關閉時自動容錯移轉。 在這種情況下,您可以為每個複本 LDAP 伺服器建立一個 AdfsLdapServerConnection,然後使用 Add-AdfsLocalClaimsProviderTrust Cmdlet 的 - LdapServerConnection 參數來新增連線物件的陣列。
請注意: 您嘗試使用 Get-Credential 並輸入 DN 和密碼以繫結至 LDAP 執行個體可能會導致失敗,因爲有特定輸入格式的使用者介面需求 (例如 domain\username 或 user@domain.tld)。 您可以改用 ConvertTo-SecureString Cmdlet,如下所示 (下列範例假設 uid=admin,ou=system 作為要用來繫結至 LDAP 執行個體的認證 DN):
$ldapuser = ConvertTo-SecureString -string "uid=admin,ou=system" -asplaintext -force $DirectoryCred = Get-Credential -username $ldapuser -Message "Enter the credentials to bind to the LDAP instance:"
然後輸入 uid=admin 的密碼,並完成其餘的步驟。
接下來,您可以使用 New-AdfsLdapAttributeToClaimMapping Cmdlet 來執行將 LDAP 屬性對應至現有 AD FS 宣告的選擇性步驟。 在下列範例中,您會將 givenName、Surname 和 CommonName LDAP 屬性對應至 AD FS 宣告:
#Map given name claim $GivenName = New-AdfsLdapAttributeToClaimMapping -LdapAttribute givenName -ClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname" # Map surname claim $Surname = New-AdfsLdapAttributeToClaimMapping -LdapAttribute sn -ClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname" # Map common name claim $CommonName = New-AdfsLdapAttributeToClaimMapping -LdapAttribute cn -ClaimType "http://schemas.xmlsoap.org/claims/CommonName"
完成此對應是為了讓 LDAP 存放區中的屬性可用為 AD FS 中的宣告,以便在 AD FS 中建立條件式存取控制規則。 它也可讓 AD FS 使用 LDAP 存放區中的自訂結構描述,方法是提供將 LDAP 屬性對應至宣告的簡單方式。
最後,您必須使用 Add-AdfsLocalClaimsProviderTrust Cmdlet,將有 AD FS 的 LDAP 存放區註冊為本機宣告提供者信任:
Add-AdfsLocalClaimsProviderTrust -Name "Vendors" -Identifier "urn:vendors" -Type Ldap # Connection info -LdapServerConnection $vendorDirectory # How to locate user objects in directory -UserObjectClass inetOrgPerson -UserContainer "CN=VendorsContainer,CN=VendorsPartition" -LdapAuthenticationMethod Basic # Claims for authenticated users -AnchorClaimLdapAttribute mail -AnchorClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" -LdapAttributeToClaimMapping @($GivenName, $Surname, $CommonName) # General claims provider properties -AcceptanceTransformRules "c:[Type != ''] => issue(claim=c);" -Enabled $true # Optional - supply user name suffix if you want to use Ws-Trust -OrganizationalAccountSuffix "vendors.contoso.com"
在上述範例中,您要建立稱為「廠商」的本機宣告提供者信任。 透過將
$vendorDirectory
指派給-LdapServerConnection
參數,您可以指定 AD FS 的特定連線資訊,以連線到這個本機宣告提供者信任所代表的 LDAP 目錄。 請注意,在步驟一中,您已為$vendorDirectory
指派連線到特定 LDAP 目錄時要使用的連接字串。 最後,您會指定$GivenName
、$Surname
和$CommonName
LDAP 屬性 (對應至 AD FS 宣告) 會用於條件式存取控制,包括多重要素驗證原則和發行授權規則,以及透過 AD FS 發行的安全性權杖中的宣告進行發行。 若要搭配 AD FS 使用 Ws-Trust 之類的使用中通訊協定,您必須指定 OrganizationalAccountSuffix 參數,這可讓 AD FS 在服務主動授權要求時區分本機宣告提供者信任。