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
- 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
- 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 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.
- Signierzertifikat:
- Weiter
Damit sind die notwendigen Konfigurationen in Authentik abgeschlossen.
- 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









