Entra ID Domain Federation via Authentik

·

Identitäten in einem lokalem Identity Provider (IDP) pflegen und zum Login für Microsoft 365 (Office 365) verwenden?
Wie dies mittels Authentik funktioniert, ganz ohne Active Directory und ADSync, haben wir nachfolgenden Artikel beschrieben.
Weiterführende Informationen finden sich in der Authentik Dokumentation sowie bei msxfaq.de.

Voraussetzungen

Domains

In der Beschreibungen verwendete Platzhalter:

  • auth.company.de: FQDN der Authentik Installation
  • domain.de: Die im Entra ID hinterlegte benutzerdefinierte Domain

⚠ Die Konfiguration einer Domain und eine durchgeführte DNS Verification setzen wir als gegeben voraus. Es muss sichergestellt sein, dass die benutzerdefinierte Domain bereits in Microsoft Entra ID hinzugefügt und überprüft wurde.

Property mapping

Zwischen dem IDP und Entra ID muss ein Parameter konfiguriert werden, der für den User-Abgleich verwendet wird. Diese ImmutableID sollte sich nicht ändern.
Wir benutzen die Mail-Adresse der User für diesen Parameter, was bei Namenswechseln jedoch zu manueller Nacharbeit führen kann.

Powershell

Es wird das Microsoft Graph PowerShell-Modul benötigt, um die Microsoft Entra-Domäne mit Authentik zu verbinden. Das Modul kann durch Ausführen des folgenden PowerShell-Befehls installiert werden:

Install-Module Microsoft.Graph -Scope CurrentUser

Authentik Konfiguration

Property mapping ImmutableID

  • In Authentik anmelden und das Admin Interface aufrufen
  • Navigiere zu Customization > Property Mappings > Erstellen
  • Den Typ SAML Provider Eigenschafts-Zuordnung auswählen
  • Name für die Eigenschaft festlegen:
    M365 Entra ImmutableID
  • SAML-Attributsname:
    http://schemas.microsoft.com/claims/multipleauthn
  • Ausdruck:
    return user.email (sofern die Mail Adresse das maßgebende Merkmal sein soll)
  • Speichern

Property mapping für MFA
MFA ist mittlerweile obligatorisch für Microsoft 365, daher muss ein weiteres Mapping konfiguriert werden, andernfalls wird der Benutzer zweimal zur Eingabe seiner Anmeldedaten aufgefordert.

  • In Authentik anmelden und das Admin Interface aufrufen
  • Navigiere zu Customization > Property Mappings > Erstellen
  • Den Typ SAML Provider Eigenschafts-Zuordnung auswählen
  • Name für die Eigenschaft festlegen:
    M365 Entra AuthnContextClassRef
  • SAML-Attributsname:
    AuthnContextClassRef
  • Ausdruck: return „http://schemas.microsoft.com/claims/multipleauthn“
  • Speichern
  • Name für die Anwendung festlegen:
    M365
  • Slug:
    m365
  • Richtlinien-Engine-Modus:
    ANY
  • Weiter
  • Provider-Typ:
    SAML-Anbieter
  • Weiter
  • Name für den SAML-Anbieter festlegen:
    Provider for M365
  • Autorisierungs-Flow:
    default-provider-authorization-implicit-consent
  • ACS URL:
    https://login.microsoftonline.com/login.srf
  • Aussteller:
    https://auth.company.de/application/saml/m365/metadata/
  • Service Provider Bindung:
    Post
  • Zielgruppe:
    urn:federation:MicrosoftOnline
  • Erweiterte Protokolleinstellungen öffnen
    • Signierzertifikat:
      ein Zertifikat auswählen (muss vorhanden sein)
    • Eigenschaftszuordnung(en):
      • Alle User-Property-Mappings entfernen
    • Name ID Eigenschaft:
      authentik default SAML Mapping: Email
    • AuthnContextClassRef Property Mapping:
      M365 Entra AuthnContextClassRef
    • Alle weiteren Felder/Konfiguration müssen nicht angepasst werden.
  • Weiter

Damit sind die notwendigen Konfigurationen in Authentik abgeschlossen.

Signierzertifikat herunterladen

Applikation Provider erstellen

  • In Authentik anmelden und das Admin Interface aufrufen
  • Navigiere zu Applications > Providers > Provider for M365 auswählen
  • Signierzertifikat herunterladen: Download
    (wird für den nächsten Schritt benötigt)
  • Zeritfikat von PEM in CER Format umwandeln z.B. hier.

Microsoft 365 (Office 365) Konfiguration

Vorhandene User anpassen (optional)

In unserem Fall hatten wir bereits User in M365 angelegt, welche wir weiter verwenden wollen. Daher muss für diese User die ImmutableID gesetzt werden, das kann manuell geschehen oder per Skript:

#Verbindung zu Microsoft Graph herstellen
Connect-MgGraph -Scopes "User.ReadWrite.All"

#Für alle User die Mail Adresse als ImmutableID setzen
$users = Get-MgUser -Filter "endsWith(mail,'@domain.de')" -All -ConsistencyLevel eventual
foreach ($user in $users) {
    if ($user.Mail) {
        Update-MgUser -UserId $user.Id -OnPremisesImmutableId $user.Mail
        Write-Host "Set ImmutableId for $($user.Mail)"
    }
}

Domain Federation

Jetzt kommt der spannende Teil, die Verknüpfung von Authentik und Entra ID.

#Verbindung zu Microsoft Graph herstellen
Connect-MgGraph -Scopes "Domain.ReadWrite.All", "Directory.AccessAsUser.All", "User.Read.All", "Application.ReadWrite.All"

#Variablen definieren
$domain = "domain.de"
$PassiveLogOnUri = "https://auth.company.de/application/saml/m365/sso/binding/post/"
$LogOffUri = "https://auth.company.de/application/saml/m365/slo/binding/post/"
$IssuerUri = "https://auth.company.de/application/saml/m365/metadata/"
$MetadataExchangeUri = $IssuerUri
$ActiveSignInUri = "https://auth.company.de/application/saml/m365/sso/binding/post"
$SigningCert = Get-Content "C:\path\to\authentik_certificate.cer" -Raw
$DisplayName = $domain
$FederatedIdpMfaBehavior = "acceptIfMfaDoneByFederatedIdp" 

#Federation aktivieren (⚠ die ` am Ende jeder Zeile nicht entfernen!)
New-MgDomainFederationConfiguration `
  -DomainId $domain `
  -PassiveSignInUri $PassiveLogOnUri `
  -SignOutUri $LogOffUri `
  -IssuerUri $IssuerUri `
  -MetadataExchangeUri $MetadataExchangeUri `
  -SigningCertificate $SigningCert `
  -DisplayName $DisplayName `
  -FederatedIdpMfaBehavior $FederatedIdpMfaBehavior `
  -PreferredAuthenticationProtocol "saml" `
  -ActiveSignInUri $ActiveSignInUri

Ausprobieren!

In einem privaten Tab / leeren Browser im Microsoft 365 Portal anmelden. Es sollte eine Weiterleitung an Authentik erfolgen, nach erfolgreicher Anmeldung ist man bei M365 angemeldet.

Neue Identitäten

Werden neue User im Authentik angelegt und melden sich dann an M365 an, wird dies fehlschlagen. Der „leere“ Benutzer muss mit der entsprechenden ImmtuableID vorab in M365 angelegt werden:

#Verbindung zu Microsoft Graph herstellen
Connect-MgGraph -Scopes "Domain.ReadWrite.All", "Directory.AccessAsUser.All", "User.Read.All", "Application.ReadWrite.All"

#Für alle User die Mail Adresse als ImmutableID setzen
New-MgUser `
   -DisplayName 'Nachname, Vorname' `
   -AccountEnabled  `
   -MailNickname "vorname.nachname" `
   -UserPrincipalName "vorname.nachname@domain.de" `
   -OnPremisesImmutableId "vorname.nachname@domain.de"

Jetzt taucht der User ganz normal in der M365 Konsole auf, er kann sich anmelden und es können bei Bedarf Lizenzen zugeordnet werden.

Domain Federation deaktivieren

Sollte etwas nicht geklappt haben, kann die Federation deaktiviert oder auf Managed zurück gestellt werden:

Variante 1

#Verbindung zu Microsoft Graph herstellen
Connect-MgGraph -Scopes "Domain.ReadWrite.All", "Directory.AccessAsUser.All", "User.Read.All", "Application.ReadWrite.All"

#Federation deaktivieren
$Domain = "domain.de" 
$federation = get-MgDomainFederationConfiguration -DomainId $Domain
Remove-MGDomainFederationConfiguration `
   -DomainId $domain `
   -InternalDomainFederationId $federation.id

Variante 2

#Verbindung zu Microsoft Graph herstellen
Connect-MgGraph -Scopes "Domain.ReadWrite.All", "Directory.AccessAsUser.All", "User.Read.All", "Application.ReadWrite.All"

#Domain auf Managed umstellen
Update-MgDomain `
   -DomainId domain.de `
   -AuthenticationType managed