Windows Server 2016 bringt einige Neuerungen. In diesem Beitrag möchte ich speziell auf die Federation Services eingehen. Neben einer umfangreichen Unterstützung von OAuth 2.0 und OpenID Connect können in den Federation servcies „wieder“ Lokale Claim Anbieter neben Active Directory konfiguriert werden. In Windows Server 2008 konnten nur die Lokale Active Directory Gesamtstruktur zur Authentifizierung verwendet werden. Eine Authentifizierung mit einer anderen Domäne oder Gesamtstruktur erforderte eine Vertrauensstellung oder die Installation und Konfiguration der Federation Services in dieser Domäne.
Windows Server 2003 R2 | ADFS v1.0/v1.1 | Unterstützung lokaler Claim Anbieter |
Windows Server 2008 und R2 | ADFS v2.0 (seperater Donwload) | Keine Unterstützung für lokale Claim Anbieter |
Windows Server 2012 und R2 | ADFS v3.0 | Keine Unterstützung für lokale Claim Anbieter |
Windows Server 2016 | ADFS v4.0 | Unterstützung lokaler Claim Anbieter |
Tatsächlich führte die fehlende Unterstützung für lokale LDAP Claim Anbieter dazu, dass viele Bestandkunden von ADFS v1.x ihre Umgebung nicht migrieren wollten.
Viele Unternehmen authentifizieren Externe Anwender über einen günstigen bzw. lizenzfreien LDAP Verzeichnisdienst. Dieser Möglichkeit wurden sie in ADFS ab Version 2.0 beraubt. Sie hatten somit nur die Möglichkeiten in einen anderen Federation Service zu investieren, auf der alten Infrastruktur zu bleiben oder aufwändig und teuer die vorhandenen LDAP Konten in ein neues Active Directory mit Federation Services zu überführen.
Die Active Directory Federation Services von Windows Server 2016 sind in der Lage neben Active Directory auch wieder andere lokale LDAP Quellen anzubinden.
LDAP Datenquellen:
- Active Directory (nicht Vertraute Gesamtstruktur)
- ADLDS/ADAM
- Apache DS
- IBM Tivoli DS
- Novell DS
- Open LDAP
- Open DJ
- Open DS
- Radiant Logic Virtual DS
- Sun ONE v6, v7, v11
In diesem Beitrag beschreibe ich die Anbindung der Active Directory Lightweight Directory Services (ADLDS) an die Federation Services.
Es gilt zu beachten, dass bei der Anbindung einer weiteren Datenquelle an die Federation Services, automatisch die „Home Realm Discovery“ (HDR) Webseite aktiviert wird. Die Website wird initial vor der ersten Anmeldung aufgerufen und fordert auf den entsprechenden Authentifizierungsprovider auszuwählen. Es ist Empfehlenswert sich im Vorfeld ein wenig mit dieser Thematik auseinander zu setzen. |
Voraussetzungen
- ADFS PowerShell Module
- LDAP Server Hostname
- LDAP Service TCP Port
- Distinguished Name eines LDAP Abfrage berechtigten Benutzers
- Passwort des Abfrage berechtigten Benutzers
Beispielskript
Import-Module adfs
$idStoreAccountUserName = „CN=SVC-ADFS-01,CN=Users,CN=Root,DC=Extranet,DC=LDAP“
$idStoreAccountPassword = „P@ssw0rd!“ | ConvertTo-SecureString -asPlainText -Force
$idStoreAccountCreds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $idStoreAccountUsername,$idStoreAccountPassword
$idStoreInstance = New-AdfsLdapServerConnection -HostName „LDAP-Server“ -Port 50000 -SslMode Non -credential $idStoreAccountCreds -AuthenticationMethod Basic
$mapGivenName = New-AdfsLdapAttributeToClaimMapping -LdapAttribute givenName -ClaimType „http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname“
$mapSurname = New-AdfsLdapAttributeToClaimMapping -LdapAttribute sn -ClaimType „http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname“
$mapUid2Name = New-AdfsLdapAttributeToClaimMapping -LdapAttribute uid -ClaimType „http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name“
$mapUid2Upn = New-AdfsLdapAttributeToClaimMapping -LdapAttribute uid -ClaimType „http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn“
Add-AdfsLocalClaimsProviderTrust –Name „Extranet“ –Identifier „urn:adlds:store“ –Type Ldap -LdapServerConnection @($idStoreInstance) –UserObjectClass user –UserContainer „CN=Users,CN=Root,DC=Extranet,DC=LDAP“ –LdapAuthenticationMethod Basic –AnchorClaimLdapAttribute uid –AnchorClaimType „http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name“ –LdapAttributeToClaimMapping @($mapGivenName, $mapSurname, $mapUid2Name, $mapUid2Upn) –Enabled
$true -AcceptanceTransformRules „@RuleName = `“Issue All Mapped Claims`“`nc:[] => issue(claim = c);“
Durch das Skript wird der Server „LDAP-Server“ mit den Kommunikationsparameter Port „50000“, „NonSSL“ unter Verwendung des ADFS Dienstkontos an die Federation Services angebunden. Bei der Anmeldung werden vier LDAP Attribute auf ein entsprechendes Claim Attribut gemapped. Claimfähige Anwendungen akzeptieren dann neben der Active Directory Anmeldung auch den LDAP Server als Authentifizierungsquelle.