In diesem Teil möchte ich die Active Directroy Federation Services konfigurieren. AD FS (Active Directory Verbunddienste) ist ein Feature des Windows Server-Betriebssystems, welches den Zugriff auf Webdienste und -anwendungen von außerhalb des Unternehmens (Firewall-Grenzen) mittels Single Sign-On erweitert.
Als Referenz verwende ich Deploy Work Folders with AD FS and Web Application Proxy.
Meine Server habe ich mittels MDT nach Teil 19c: Windows Server 2012 R2 mit MDT verteilen installiert:
- DC1.intern.einfaches-netzwerk.at
- IP-Adresse: 192.168.150.1
- EDGE1.intern.einfaches-netzwerk.at
- IP-Adresse intern: 192.168.150.254
- IP-Adresse extern: 131.107.0.3
- ADFS1.intern.einfaches-netzwerk.at
- IP-Adresse: 192.168.150.3
- WAP1 (non-domain-joined, nach dem Aufsetzen aus der Domäne entfernt)
- IP-Adresse intern: 192.168.150.4
- IP-Adresse extern: 131.107.0.4
- APP1.intern.einfaches-netzwerk.at (SyncServer, WorkFolders)
- IP-Adresse: 192.168.150.2
- CLIENT1.intern.einfaches-netzwerk.at (domain-joined)
- IP-Adresse: DHCP
- CLIENT2 (non-domain-joined, nach dem Aufsetzen aus der Domäne entfernt)
- IP-Adresse: DHCP
Active Directory Federation Services konfigurieren – Schritte:
- KDS-Rootkey erzeugen
- Group Managed Service Account erstellen
- ADServiceAccount auf ADFS1 installieren
- SSL-Zertifikat für AD FS ausstellen
- Die Server-Rolle AD FS installieren
- Relying Party Trust für Arbeitsordner hinzufügen
- Workplace Join aktivieren
- Überprüfen, ob AD FS funktioniert
KDS-Rootkey erzeugen
Der KDS-RootKey (Microsoft Group Key Distribution Service) muss für die Verwendung von Group Managed Service Accounts nur einmal in Active Directory erzeugt werden. Nach Ausführen des Cmdlets muss man 10 Stunden warten, bis alle DCs repliziert sind. Also am Besten am Abend bevor man den ersten ADServiceAccount erstellen möchte. Es gibt zwar einen einfachen Workaround, der sollte aber nur in Testumgebungen verwendet werden:
Add-KdsRootKey –EffectiveTime ((Get-Date).AddHours(-10))
- Als Administrator an DC1 anmelden
- PowerShell als Administrator starten
- Mit folgendem Befehl den KDS-Rootkey erzeugen
Add-KDSRootKey -EffectiveImmediately
- PowerShell-Cmdlet
- Mit folgendem Befehl den KDS-RootKey abrufen…
Get-KDSRootKey
- PowerShell-Cmdlet
- …und testen
Test-KDSRootKey -KeyID <key-id>
- PowerShell-Cmdlet
Gespeichert wird der KDS-RootKey in der Konfigurationspartition von Active Directory:
- Server Manager > Tools > ADSI Edit
- ADSI Edit rechts anklicken > Connect to…
- Unter Connection Point den Naming Context auf Configuration ändern > OK
- CN=Configuration\CN=Services\CN=Group Key Distribution Service erweitern
- CN=Master Root Keys anklicken > im Detailbereich ist der KDS-RootKey zu finden
- Fenster schließen
Group Managed Service Account erstellen
Als Dienstkonto für AD FS möchte ich die mit Windows Server 2012 eingeführten Group Managed Service Accounts nutzen. Damit wurde das Problem der Passwörter für Dienstkonten gelöst (siehe Group Managed Service Accounts Overview). Zuerst erstelle ich eine Sicherheitsgruppe mit dem Computerkonto von ADFS1 und berechtige diese Gruppe ein verwaltetes Passwort zu erhalten. Danach erst erstelle ich das Dienstkonto.
- Auf DC1 > Server Manager > Tools > Active Directory Users and Computers
- intern.einfaches-netzwerk.at\Einfaches-Netzwerk erweitern
- In der OU Sicherheitsgruppen folgende globale Sicherheitsgruppe erstellen
- Das Computerkonto ADFS1 zur Gruppe hinzufügen
- ADFS1 auch zur Gruppe IIS Web Server hinzufügen, damit ein SSL-Zertifikat ausgestellt werden kann (siehe Teil 6j: Eine Zertifikatsvorlage für Web Server erstellen)
- PowerShell als Administrator starten
- Mit folgendem Befehl das Dienstkonto erstellen
New-ADServiceAccount -Name gMSA-ADFS ` -DNSHostName adfs1.intern.einfaches-netzwerk.at ` -PrincipalAllowedToRetrieveManagedPassword Allow-gMSA-ADFS ` -ServicePrincipalNames http/adfs,http/adfs.einfaches-netwzerk.at
- PowerShell-Cmdlet
- Zur Kontrolle kann man in der Active Directory Users and Computers-Konsole auf den Container Managed Service Accounts klicken
- Fenster schließen
ADServiceAccount auf ADFS1 installieren
- Falls der Server ADFS1 eingeschaltet ist, aufgrund der neuen Gruppenzugehörigkeiten neu starten
- Als Administrator an ADFS1 anmelden
- PowerShell als Administrator starten
- Mit folgendem Befehl die Active Directory AD-Tools installieren
Add-WindowsFeature -Name RSAT-AD-Tools
- PowerShell Cmdlet
- Mit folgendem Befehl das Dienstkonto installieren
Install-ADServiceAccount -Identity gMSA-ADFS
- PowerShell Cmdlet
SSL-Zertifikat für AD FS ausstellen
- Eine MMC als Admin starten
- Das Snap-in Certificates für das lokale Computerkonto hinzufügen
- Den Ordner Personal rechts anklicken > All Tasks > Request New Certificate…
- Folgendes Web Server Zertifikat anfordern
- Das ausgestellte Zertifikat rechts anklicken > All Tasks > Manage Private Keys…
- Das Dienstkonto gMSA-ADFS hinzufügen und mindestens Leserechte geben
- Das ausgestellte Zertifikat rechts anklicken > All Tasks > Export…
- Das Zertifikat
- mit Private Key
- dem Passwort Password1
- nach \\APP1\Sourcen\ADFS\adfs.pfx exportieren
- Alle Fenster schließen
Die Server-Rolle AD FS installieren
- Server Manager > Manage > Add Roles and Features
- Add Roles and Features Wizard
- Server Manager > Notifications > Configure the federation service on this server.
- Active Directory Federation Services Configuration Wizard (was für ein Name 😉 )
Relying Party Trust für Arbeitsordner hinzufügen
- Server Manager > Tools > AD FS Management
- Auf der rechten Seite auf Add Relying Party Trust… klicken
- Add Relying Party Trust Wizard
- Welcome > Start
- Select Data Source: Enter data about relying party manually
- Specify Display Name
- Choose Profile: ADFS profile > Next
- Configure Certificate > Next
- Configure URL > Next
- Configure Identifiers
- Configure Multi-factor Authentication Now? > Next
- Choose Issuance Authorization Rules
- Permit all users to access this relying party > Next
- Ready to Add Trust > Next
- Finish > Close
- Edit Claim Rules for Arbeitsordner
- Alle Fenster schließen
- PowerShell als Administrator starten
- Mit folgendem Befehl JSON Web Token aktivieren
Set-ADFSRelyingPartyTrust -TargetIdentifier "https://Windows-Server-Work-Folders/V1" ` -EnableJWT $true
- Mit folgendem Befehl die Verschlüsselung der Claims deaktivieren
Set-ADFSRelyingPartyTrust -TargetIdentifier "https://Windows-Server-Work-Folders/V1" ` -Encryptclaims $false
- Mit folgendem Befehl Autoupdate aktivieren
Set-ADFSRelyingPartyTrust -TargetIdentifier "https://Windows-Server-Work-Folders/V1" ` -AutoupdateEnabled $true
- Mit folgendem Befehl das Ausstellen von OAuth Refresh Tokens (siehe OAuth – Wikipedia) für alle Geräte aktivieren
Set-ADFSRelyingPartyTrust -TargetIdentifier "https://Windows-Server-Work-Folders/V1" ` -IssueOAuthRefreshTokensTo AllDevices
- PowerShell Cmdlets
Workplace Join aktivieren
Workplace Join ist optional, ermöglicht aber den Anwendern den Zugriff auf Ressourcen mit privaten Geräten.
- PowerShell als Administrator starten
- Mit folgenden Befehlen Workplace Join aktivieren
Initialize-ADDeviceRegistration -ServiceAccountName INTERN\gMSA-ADFS$ Enable-ADFSDeviceRegistration Set-ADFSGlobalAuthenticationPolicy -DeviceAuthenticationEnabled $true
- PowerShell Cmdlets
Überprüfen, ob AD FS funktioniert
- Internet Explorer starten
- Mit folgender URL die Funktionalität von AD FS testen
https://adfs.einfaches-netzwerk.at/adfs/ls/idpinitiatedsignon.htm
- Anmelden
Soweit funktionierts! 🙂