Hallo Leser,
wie im Beitrag zu Exchange Server 2019 Cu13 angekündigt möchte ich euch heute aufzeigen wie oAuth 2.0 für Outlook konfiguriert wird.
Überblick
Mit der Einführung von Exchange Server 2019 Cu13 hat Microsoft in Outlook die Unterstützung für oAuth 2.0 oder auch Modern Auth On-Premises hinzugefügt.
Damit ist es nun möglich Outlook Clients die per MAPIoverHTTPS angebunden sind via Bearer Token zu Authentifizieren – On-Premises und ohne Azure AD oder Cloud Services!!!
Voraussetzungen
Um die Moderne Authentifizierung zu verwenden müssen einige Voraussetzungen erfüllt werden:
- ADFS / WAP unter Windows Server 2019 oder höher
- Exchange Server 2019 CU13 oder höher
- Outlook Build Nummer 16327.20200 oder höher
- Windows 11 22H2 inkl. März 23 Update (KB5023706 ) oder später
Meine Testumgebung
Ich verwende eine ähnlich aufgebaute Testumgebung wie früher. Wobei alle Server und Systeme über derzeit aktuelle Updates und Patches beinhalten um die o.g. Voraussetzungen zu erfüllen. Achtung: Alle Windows Systeme sind in Englisch installiert!
Einige Einstellungen sind ggf. leicht verändert, wie bspw. die ADFS URI. Beim Aufbau hab ich mich jedoch weiterhin an meinen vorhergegangen Artikeln orientiert. Der ADFS / WAP Aufbau unter Windows Server 2022 ist identisch zu Windows Server 2016.
Mein Windows Client ist Windows 11 22H2 mit aktuellen Updates.
ADFS 4.0 mit Exchange 2016 – Konfigurationsübersicht – Andi’s iT Blog (asichel.de)
Konfiguration
Die Konfiguration umfasst mehrere Schritte.
- Zum einem die Application Group im ADFS,
- die Konfiguration im AD bzw. den GPOs für die Clientsteuerung.
- Die Konfiguration am Exchange
Für die Konfigurationen findet ihr jeweils die passenden PowerShell Scripts die für euch geschrieben habt. Die Details dazu entnehmt bitte dem jeweiligen Konfigurationsschritt.
Schritt 1 – AD FS Appliaction Group
Die Konfiguration wird vollständig über die PowerShell abgeschlossen. Referenz ist die Microsoft Konfiguration.
<# .SYNOPSIS Sets up Microsoft ADFS Application Groups via PowerShell. .DESCRIPTION Adds Outlook Appliaction Group to ADFS Server Adds Outlook - Web Api to ADFS Application Group Adds Outlook Native Application to Application Group .EXAMPLE .\OutlookAppADFSrules .INPUTS Inputs (if any) .OUTPUTS Output (if any) .NOTES This script should be run on the ADFS system. © Andres Sichel // blog.asichel.de // blog@asichel.de #> #Define Outlook URIs $OutlookMAPIURI = "https://mail.asichel.de/" $AutodiscoverURI = "https://autodiscover.asichel.de/" #Create Application Group Name $ClientRoleIdentifier = "Outlook" # Define GUIDs for Group and Native Application $Groupidentifier = (New-Guid).Guid $OutlookNativeID = "d3590ed6-52b3-4102-aeff-aad2292ab01c" #pre defined by microsoft # This URI are pre defined by Microsoft: https://learn.microsoft.com/en-us/Exchange/plan-and-deploy/post-installation-tasks/enable-modern-auth-in-exchange-server-on-premises?view=exchserver-2019 $redirect1 = "urn:ietf:wg:oauth:2.0:oob" $redirect2 = "ms-appx-web://Microsoft.AAD.BrokerPlugin/d3590ed6-52b3-4102-aeff-aad2292ab01c" #Create the new Application Group in ADFS New-AdfsApplicationGroup -Name $ClientRoleIdentifier -ApplicationGroupIdentifier $ClientRoleIdentifier -Description "ADFS App for Microsoft Outlook On-Premises" #Define Transformation Rules $IssuanceTransformRules = @' @RuleName = "ActiveDirectoryUserSID" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"] => issue(claim = c); @RuleName = "ActiveDirectoryUPN" c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"] => issue(claim = c); @RuleName = "AppIDACR" => issue(Type = "appidacr", Value = "2"); @RuleName = "SCP" => issue(Type = "http://schemas.microsoft.com/identity/claims/scope", Value = "user_impersonation"); '@ #Create the Outlook Web API WebApplication $ADFSWebApp = Add-AdfsWebApiApplication -Name "$ClientRoleIdentifier - Web API" -ApplicationGroupIdentifier $ClientRoleIdentifier -Identifier $OutlookMAPIURI,$AutodiscoverURI -AccessControlPolicyName 'Permit everyone' -IssuanceTransformRules $IssuanceTransformRules #Grant the ADFS Applciation the allatclaims and openid permissions Grant-AdfsApplicationPermission -AllowAllRegisteredClients -ServerRoleIdentifier $AutodiscoverURI -ScopeNames @('user_impersonation', 'openid') # Add Native Application to the Group Add-AdfsNativeClientApplication -ApplicationGroupIdentifier $ClientRoleIdentifier -Name "$ClientRoleIdentifier - Native application" -Identifier $OutlookNativeID -RedirectUri $redirect1,$redirect2 Write-host "AD FS 2019 Application Group for Outlook was addedd." -ForegroundColor Green
Damit ist die Konfiguration im AD FS weitestgehend abgeschlossen. Als nächstes widmen wir uns mal dem Client zu der das Feature unterstützen soll.
Schritt 2- Client konfigurieren
Der Client wird mittels GPO konfiguriert. Dafür erstelle ich zunächst eine GPO mit dem Fokus auf die Computer-Objekte und konfiguriere diese wie folgt:
- GPO erstellen und benennen, bspw.: „Outlook Modern Auth“
- GPO bearbeiten und zu folgenden Pfad wechseln:
- Computer Configuration –> Preferences –> Windows Settings –> Registry
- New Registry Item (Bild 3):
- Action: Update
- Hive: HKEY_LOCAL_MACHINE
- Key Path: SOFTWARE\Policies\Microsoft\AAD\AuthTrustedDomains\https://sts.asichel.de
- Value name: Default
- Value type: REG_SZ
- Wiederholen für ein zweites Item:
- Action: Update
- Hive: HKEY_LOCAL_MACHINE
- Key Path: SOFTWARE\Policies\Microsoft\AAD\AuthTrustedDomains\https://sts.asichel.de/
- Value name: Default
- Value type: REG_SZ
- Auf die Clients ausrollen (Bild 4)
Im zweiten Schritt wird eine weitere GPO erstellt, mit Fokus auf die Benutzer:
- GPO erstellen und benennen, bspw.: „Outlook Modern Auth Enable“
- GPO bearbeiten und zu folgenden Pfad wechseln:
- User Configuration –> Preferences –> Windows Settings –> Registry
- New Registry Item (Bild 5):
- Action: Update
- Hive: HKEY_LOCAL_USER
- Key Path: SOFTWARE\Microsoft\Office\16.0\Common\Identity
- Value name: EnableExchangeOnPremModernAuth
- Value type: REG_DWORD
- Value data: 1
- Auf die User ausrollen (Bild 6)
Damit ist die Clientkonfiguration abgeschlossen. Ich vergewisser mich nochmal das mein Outlook die Anforderungen erfüllt:
Schritt 3 – Exchange Server konfiguration
Authentication Policy
Im dritten Schritt konfiguriere ich die Authentication Policy in Exchange Server On-Premises. Wichtig ist das wir ModernAuth zunächst für alle User deaktivieren und anschließend für eine Gruppe von User aktivieren (Bild 7):
New-AuthenticationPolicy "Block modern auth for all users" -BlockModernAuthWebServices -BlockModernAuthActiveSync -BlockModernAuthAutodiscover -BlockModernAuthImap -BlockModernAuthMapi -BlockModernAuthOfflineAddressBook -BlockModernAuthPop -BlockModernAuthRpc
Anschließend setze ich diese Authentication Policy als Default in der Organization Config (Bild 8):
Set-OrganizationConfig -DefaultAuthenticationPolicy "Block modern auth for all users"
Nun erstelle ich eine eigene Authentication Policy (Bild 9):
New-AuthenticationPolicy "Allow Modern auth"
Auth Server
Nun muss Exchange Server nur noch wissen das Modern Auth anfragen an einen Authentication Provider weitergeleitet werden müssen. Dafür wird ein neuer Auth-Provider erstellt (Bild 10):
New-AuthServer -Type ADFS -Name "sichel STS" -AuthMetadataUrl https://sts.asichel.de/FederationMetadata/2007-06/FederationMetadata.xml
Anschließend muss der Auth-Server noch als Standard definiert werden (Bild 11):
Set-AuthServer -Identity "sichel STS" -IsDefaultAuthorizationEndpoint $true
Und sofern noch nicht aktiv oAuth2Client Profile aktiviert werden (Bild 12):
Set-OrganizationConfig -OAuth2ClientProfileEnabled $true
User für oAuth 2.0 bzw. modern Auth aktivieren
Ich aktiviere einen User für Modern Auth:
Set-User andi.sichel -AuthenticationPolicy "Allow Modern auth"
Da wir nun die Konfiguration angepasst haben dauert es bis zu 30 Minuten eh die Änderungen wirksam sind. Wer nicht warten will, startet den Server neu bzw. führt ein „iisreset“ durch.
Schritt 4- Test am Client
Mein Windows Client ist passend den Anforderungen vorbereitet und ich kann den ersten Test ausführen.
Hier sieht man wie die Mailbox vor der Konfiguration verbunden war:
Nach erfolgreicher Aktivierung der Richtlinie für den User, muss dieser sich ggf. per AD FS Authentifizierung anmelden und erhält eine Aufforderung dazu (Bild 14).
Nachdem der Benutzer authentifiziert wurde wird die Authentifizierungsmethode in Outlook nun auch auf „Bearer“ umgestellt und der User ist mittels Modern Auth verbunden. Dies gilt selbstverständlich nur für die Benutzer welche die o.g. Richtlinie erhalten haben.
Damit ist die Konfiguration abgeschlossen und die Verbindungen gegenüber Exchange Server On-Premises besser abgesichert.
Fazit und Überlegungen
Sicherlich ist der Einsatz einer AD FS infrastruktur nicht mehr Zeitgemäß und die meisten Kunden sind mittlerweile in der Cloud. Wer jedoch On-Premises ist und bleibt, ggf. AD FS & WAP noch im Einsatz hat ist gut beraten die Authentifizierung umzustellen. Durch 3rd Party Tools lassen sich so im AD FS MFA Lösungen integrieren und bedingte Zugriffe realisieren um die Zugriffe auf Postfächer abzusichern.
Mittels DeviceRegistration Services und Zertifikatsbasierter Authentifizierung, Gruppenzugehörigkeiten und Netzwerkbedingungen lassen sich so bedingte Zugriffsregeln fernab jeder Azure Cloud Lösung realisieren.
Zu bedenken sind dabei auch Themen wie:
- Firewall & Web Proxys
- Zertifikate
- DNS Planung
- Loadbalancer in HA-Umgebungen für AD FS & WebApplication Proxy
Die Umsetzung im Web Application Proxy folgt im zweiten Teil und zeigt so auf wie der User sich von extern mittels Token am On-Premises Exchange Server authentifiziert.
Gruß aus Bielefeld
Andi
Hinterlasse einen Kommentar