Im Beitrag ActiveDirectory SSO mit Apache habe ich erklärt, wie ein Apache per Kerberos Benutzer authentifizieren kann.
Benutzt man den Azure Anwendungsproxy, um die On-Premises Anwendung in der Cloud bereitzustellen, so sind ein paar zusätzliche Handgriffe notwendig um auch nicht-IIS Server per SSO verfügbar zu machen.
Dazu ist es zunächst hilfreich, den SSO Fluss zu verstehen:
- Der Anwendungsproxy terminiert auf dem lokalen Connector (Dienst auf einem beliebigen Server der Domäne, ich nenne ihn mal "Endpunkt-Server")
- Mittels Service Principal Name (SPN) wird nun ermittelt, welches Kerberos Ticket ausgestellt werden muss und wie der Zugriff delegiert wird
setspn -Q HTTP/webserver.domain.com
- Im Falle eines IIS würde der "Endpunkt-Server" im AD eine Delegierung auf den SPN erhalten. Allerdings ist der Apache Server kein Domänen-Mitglied und daher nicht in der Liste der Delegierung verfügbar. Vielmehr wurde ein Proxy-Benutzer erstellt, dessen Keytab für den Apache verwendet wird.
Daher handelt es sich um eine sogenannte "Delegated Identity". Dieser muss man noch mitteilen, dass sich der "Endpunkt-Server" ihrer bedienen darf:
$connector = Get-ADComputer -Identity endpunkt-server -server <dc> Set-ADUser -Identity idp -PrincipalsAllowedToDelegateToAccount $connector Get-ADUser idp -Properties PrincipalsAllowedToDelegateToAccount
Auf dem "Endpunkt-Server" muss außerdem noch ein Registry Schlüssel hinzugefügt werden um das Kerberos Token im SPNEGO Format zu übergeben:
REG ADD "HKLM\SOFTWARE\Microsoft\Microsoft AAD App Proxy Connector" /v UseSpnegoAuthentication /t REG_DWORD /d 1 net stop WAPCSvc & net start WAPCSvc
Nun kann in der Azure Anwendung das SSO konfiguriert werden:
Der SPN wurde oben unter 2. bereits erwähnt.
Die "Delegierte Identität für Anmeldung" ist davon abhängig, welchen Benutzername die Webanwendung erfordert (in der Variable HTTP_REQEST[REMOTE_USER]).
- "Benutzername ist Teil des Benutzerprinzipalnamens" liefert bei mir den Namen vor dem Domain-Part ("joe")
- "Name des lokalen SAM Kontos" liefert mir den vollständigen Namen inkl. Kerberos Domäne ("joe@DOMAIN:COM")
Keine Kommentare:
Kommentar veröffentlichen