Azure Application Proxy und SAP Fiori

Der Azure Application Proxy ermöglicht es auf sehr einfache Art und Weise interne Webseiten bzw. Web-Applikationen auch nach extern zu veröffentlichen. Die Möglichkeit „Azure Pre Authentication“ zu nutzen, macht den Zugriff von extern zusätzlich auch noch sicher. Dazu werden in Azure Applikationen angelegt, die eine externe Adresse haben und auf eine interne Webseite verweisen. Auf diese Art und Weise kann man SAP Fiori Applikationen relativ einfach von extern erreichbar machen.

Der Aufbau ist dabei wie folgt:

Intern steht ein Server der den „Azure Application Proxy Connector“ installiert hat. Dieser Server baut eine ausgehende Verbindung zu Azure auf und wartet auf einen Zugriff. Wenn ich nun in Azure auf die Applikation zugreife, muss ich als erstes meinen Azure-User samt Passwort angeben. Wenn ich mich erfolgreich authentifiziert habe (und die nötigen Rechte für die Applikation in Azure zugewiesen habe), wird die Anfrage an den internen Azure Application Proxy Connector weitergeleitet. Dieser baut einen ausgehenden Tunnel auf und fungiert als „Jump-Server“. Der Traffic läuft also von Azure zum Application Proxy Connector Server und dann von dort aus zur internen Webseite.

Da ich mich bereits in Azure Authentifiziert habe, kann ich dem Azure Application Proxy Connector diese Anmelde-Daten auch mitgeben. Von diesem Server aus kann ich dann die Anmelde-Daten an den Webserver weitergeben. Dieses Verfahren nennt sich „Kerberos Constrained Delegation“.

ServicePrincipalName und Kerberos Constrained Delegation

Ich nutze dazu den ServicePricipalName der als „Empfänger“ für das Kerberos-Ticket genommen wird. Es sollte bereits ein SPN auf dem Ziel-Server vorhanden sein, mit dem Aufbau:

http/NETBIOSNAMESERVERSAP

Hier sei nochmal der Hinweis darauf gegeben, dass das http/ keine URL ist und tatsächlich nur mit einem / notiert wird. Rufe ich nun die „Active Directory Users and Computers“ Konsole auf, kann ich dort nach dem Azure Application Connector Server suchen. In den Eigenschaften des Computers gibt es einen Tab „Delegation“, in diesem stelle ich nun auf „Trust this computer for delegation to specified services only“.

Anschließend suche ich nach dem SAP Fiori Server und wähle dort den entsprechenden SPN.

SPNego

Nutzt du SPNego für das Single Sign On, hast du wahrscheinlich „User Service Principal Names“ im Einsatz. Da SPNego hier auf den Service-User baut, reicht es deshalb nicht aus nur dem Server auf dem der SAP-Service läuft die Delegierung der Kerberos-Tickets zu erlauben. In diesem Fall muss dem Azure Application Proxy Server erlaubt werden, Kerberos Tickets an diesen Service-Account zu delegieren. Der Application Proxy Server leitet das Kerberos Ticket also an den Service User weiter.

Da es dazu keine GUI gibt, musst du es auf Powershell-Ebene machen. Das ist aber relativ einfach und gut nachvollziehbar:

#Der AzureAppProxyServer wird in die Variable gespeichert und angezeigt
$AzureAppProxyServer = Get-ADComputer -identity SERVERNAME
$AzureAppProxyServer

#Der SAP SSO User wird in die Variable gespeichert und angezeigt
$SSOServiceUser = Get-ADUser -Identity SAPSSOSERVICEUSERNAME
$SSOServiceUser

#Dem AzureAppProxyServer wird erlaubt Kerberos Tickets an den SAP SSO User zu delegieren
Set-ADUser $SSOServiceUser -PrincipalsAllowedToDelegateToAccount $AzureAppProxyServer

So haben wir jetzt das gleiche Ergebnis wie oben: Der Azure App Proxy Server darf Kerberos-Tickets an die Empfänger-Stelle delegieren.

Usermapping für SAP

Bei einigen SAP-Systemen wird der SNC-Name zum SSO genutzt. Dieser setzt sich wie folgt zusammen:

SAMAccountName@internerDomainAufbau

In Azure melde ich mich aber mit meinem UserPrincipalName an. Was kommt nun am Backend-System an und wie kann ich das Mapping gestalten? Das kann ganz granular in der Azure Application festgelegt werden:

Hier wird also der On-premises SAMAccountName an das Backend weitergeleitet. So können Name-Mapping Probleme komplett gelöst werden.

Im Azure melde ich mich mit meinem UserPrincipalName (lukas.lange@lukaslange.de) an und komme im Backend mit meinem SAMAccountName (langead\lukas.lange) an. Wenn SAP nun das Mapping macht und ein anderes Format braucht, stellt dies kein Problem mehr dar.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.