phpIPAM Authentifizierung über Microsoft AD FS

Letzte Aktualisierung am 23.04.2023, 12:04:39 Uhr

Das Thema Identity Provider (IdP) rückt immer mehr in den Fokus/Vordergrund. In dem folgenden Artikel beschreibe ich, wie die Anmeldung am Open Source IP Address Management phpIPAM über Microsoft Active Directory Ferderation Service (AD FS) zu konfigurieren ist.

Umgebung

– AD FS: Windows Server 2019 Standard
– phpIPAM: GitHub (Tag 1.5.2), Ubuntu 22.04.2 LTS (Apache2, MariaDB)
– Beide Anwendungen (phpIPAM und AD FS) sind mit einem gültigen SSL-Zertifikat von der eigenen Zertifizierungsstelle versehen.

phpIPAM aktualisieren

Als erstes ist sicherzustellen, dass phpIPAM und dessen Submodule auf dem neusten Stand sind. Ich greife dazu auf git zurück.

(cd /home/users/jgiithhoat/www/test/phpipam && git fetch && git checkout $(git tag | tail -1) )

Zudem habe ich das Feature Pretty URL in den Einstellungen von phpIPAM aktiviert.

Konfigurationsanpassung in phpIPAM

Authentifizierungsmethode anlegen

Zuerst ist eine neue Authentifizierungsmethode vom Typ SAML anzulegen.

Nachstehend nochmals die Werte des verschiedenen Felder in Textform:

http://login.lab03.daniel.wydler.eu/adfs/services/trust
https://login.lab03.daniel.wydler.eu/adfs/ls/IdpInitiatedSignOn.aspx
https://login.lab03.daniel.wydler.eu/adfs/ls/?wa=wsignout1.0

Bei dem Parameter „IDP X.509 public cert“ muss das SSL-Zertifikat des AD FS eingetragen werden. Wichtig ist, dass das Zertifikat im Format BASE64 exportiert wurde in den Inhalt 1:1 kopiert und eingefügt wurde.

Die neue Authentifizierungsmethode mit „Add/Edit“ abspeichern.

Benutzer anlegen bzw. ändern

Je nachdem ob sich der Benutzer mit dem User Prinical Name (UPN) oder sAMAccountName anmelden soll, muss der Benutzername entsprechend gewählt werden.  In meiner Umgebung habe ich mich für Variante A) entschieden. Mehr dazu im Abschnitt „Konfiguration von AD FS“.

Automatische Weiterleitung der Anmeldemaske

Trotz der Verwendung der Authentifizierungsmethode ‚SAML2‘ erscheint beim Aufruf von phpIPAM im Browser wie gewohnt die Standard Anmeldeseite. Am Ende der Anmeldemaske wird der Link zur alternativen Anmeldemethode angezeigt. Das Verhalten lässt sich in den Einstellungen der Anwendung nicht ändern.

Daher ist eine Ergänzung direkt im Quellcode der Anwendung nötig (Quelle). Dazu die Datei /app/login/index.php in einem Editor öffnen. Ab Zeile 15 folgenden Codeblock hinzufügen:

else if ($_COOKIE['phpipamredirect'] != "/admin") {
    header("Location: ".create_link("saml2") );
}

Die Änderungen speichern und die Datei schließen.

Konfiguration von AD FS

Auslesen des Bezeichners des Verbunddienstes

Die Adresse im Feld „Federation Service Identifier“ in einem Editor kopieren. Diese wird später für die Konfiguration von phpIPAM benötigt.

Einrichten der Vertrauensstellungen

Zuerst muss aus phpIPAM die Federation Metafile heruntergeladen werden.

Mit Klick auf das INFO Symbol wird die Federation Metafile in einem neuen TAB im Browser geöffnet.

Die Datei im Verzeichnis deiner Wahl speichern. Danach die Datei auf den AD FS Server kopieren.

Konfiguration von Claim Issuance Policy

Für die gerade angelegte Vertrauensstellung müssen nun Regeln definiert werden. Darüber wird ein Mapping der Attribute zwischen Active Directory und SAML/phpIPAM umgesetzt.

Nachstehend hat ihr die Möglichkeit die Authentifizierung mit Hilfe

  • des User Principal Name (Beispiel daniel@ad.wydler.eu) umzusetzen.
  • des klassischen Benutzername (sAMAccountName) umzusetzen. Die Bilderserie für die letzte Variante findet ihr weiter unten.
Regeln für die Authentifizierung über User Principal Name (UPN)
Regeln für die Authentifizierung über sAMAccountName
 

Quellcode der Regel:

Get Stripped sAMAccountName

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
 => issue(store = "Active Directory", types = ("urn:strippedaccountname"), query = ";sAMAccountName;{0}", param = c.Value);

Quellcode der Regel:

Transform Stripped sAMAccountName to Name ID

c:[Type == "urn:strippedaccountname"]
 => issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified");

Standardmäßig übergibt Microsoft AD FS nicht nur den Benutzernamen, sondern auch NetBIOS Domain Name des Active Directory (z.B. LAB01\wydler.daniel). Durch die beiden benutzerdefinierten Regeln wird nur der Benutzername transformiert.

Somit ist die Konfiguration für AD FS und phpIPAM erfolgreich abgeschlossen.

Viel Spaß beim Ausprobieren. 🙂

History

10.04.2020, 14:47 Uhr Überarbeitung des Artikels – Anordnung der Bilder geändert, Inhaltsverzeichnis angelegt.
10.04.2020, 15:44 Uhr Abschnitt „Automatische Weiterleitung der Anmeldemaske hinzugefügt.
11.03.2023 Überarbeitung des Artikels für phpIPAM 1.5.2, Ubuntu 22.04 sowie AD FS unter Windows Server 2019.

 

Abonnieren
Benachrichtige mich bei
0 Comments
Inline Feedbacks
View all comments