CBA (certifcate-based authentication): Warum dieses Feature im neuen Edge Browser so nützlich ist

Bei Verwendung von CBA (certificate-based authentication) können sich Benutzer mithilfe eines Clientzertifikats authentifizieren. Das Zertifikat wird anstelle des Benutzernamens und Kennworts verwendet. Durch die Verwendung der zertifikatbasierten Authentifizierung können Administratoren ihren Benutzern den Zugriff auf SAP und Non-SAP Ressourcen ermöglichen, ohne dass Anmeldeinformationen eingegeben werden müssen. So weit so gut!

Ich hatte in meinen SAP-Security-Projekten in der Vergangenheit schon häufiger den Fall, dass sich während (und manchmal auch nach) der Einführung von SAP Single Sign-On auf Basis von X.509 Zertifikaten, folgendes bestimmtes Problem ergab:

  • Die Clients des Unternehmens melden sich mit einem TLS-Client-Zertifikat bei SAP an.
  • Durch den SAP Secure Login Server werden dazu temporäre Zertifikate ausgestellt.
  • Der Secure Login Server wird als Sub CA 1 zur vorhandenen Corporate Root CA betrieben.
  • Zur Absicherung der WLAN-Infrastruktur (802.1x EAP-TLS) stellt das Unternehmen den Anwendern nun ein weiteres Benutzer-Zertifikat per Auto-Enrollment bereit.
  • Aussteller dieses WLAN-Zertifikats ist die Sub CA 2 der vorhandenen Corporate Root CA.
  • Beide Zertifikate enthalten aufgrund deren Anforderungen die erforderlichen Eigenschaften für eine TLS-Client-Authentifizierung, insbesondere die EKU „Client Authentication“.

Da haben wir den Salat!

Beim Client ergibt sich aus dieser Situation ein Usability-Problem, das sehr unschön werden kann. Beide Zertifikate akzeptiert der Browser – oder um genau zu sein der TLS fähige Webanwendungsserver – als verwendbares TLS-Client-Authentifizierungszertifikat. Öffnet der Anwender nun beispielsweise sein Fiori Launchpad, erscheint ein Auswahldialog. Erschwerend kommt meist dazu, dass die beiden Zertifikate im Auswahldialog nur schwer zu unterscheiden sind. Problematisch wird es dann, wenn der SAP-Anwender nun (versehentlich) sein WLAN-Zertifikat verwendet, und schon erscheint ungewollt der Anmeldebildschirm.

Das Problem habe ich im Mai 2019 in einem Blog beschrieben und auch mögliche Lösungen dazu. Den Blog findet Ihr hier.

Damals konnten wir keine Lösung finden, um die Zertifikatsauswahl über einen Browser (Internet Explorer, Chrome) einzuschränken bzw. zu steuern. Der neue Browser Microsoft Edge Browser basiert auf Chrome und wurde im Januar 2020 veröffentlicht. Diese Version lässt sich mittels Richtlinien (GPO)  konfigurieren.

An sich nichts berauschend Neues, aber das hat mich auf die Fährte gebracht. Hintergrund war auch hier ein Kundenprojekt, wobei das Unternehmen hier ein zentrales TLS-Client-Authentifizierungszertifikat nutzte. Doch der neue Edge Browser ist da etwas „zickig“ und verlangt, dass eine bestimmte Policy AutoSelectCertificateForUrls aktiv konfiguriert wird, ansonsten wird für keine Site eine automatische Auswahl durchgeführt. Dieses nette Feature liefert uns also die Lösung für unser Problem. Basierend auf URL-Mustern kann der Microsoft Edge Browser für eine Liste von Websites automatisch das korrekte Client-Zertifikat auswählen, wenn die Site eines anfordert, herrlich! 😄

Ich lasse Euch mit diesem Blog an meinen Erkenntnissen teilhaben, vielleicht stößt ja auch jemand beim Googlen nach einer Lösung auf diesen Blog!

Der Testaufbau

Clientsystem: Windows 10 Client PC

Bereitstellung eines Benutzerzertifikats im Windows-Zertifikatsspeicher

Das Zertifikat wurde von einem SAP Secure Login Server ausgestellt, dies spielt jedoch keine Rolle, da die hier gezeigten Vorgaben mit allen Zertifikaten funktionieren.

Zielsystem: SAP NW AS ABAP

URL: https://icm.sapnwsso.local:50444/sap/bc/gui/sap/its/webgui?sap-client=001&sap-language=DE

Das Zielsystem ist für die Authentifizierung mit Client Zertifikaten konfiguriert.

Benutzerzertifikat: CN=COLT, OU=Demo, O=Xiting GmbH, C=DE

Das nachgestellte Problemverhalten

Sobald die URL https://icm.sapnwsso.local:50444/sap/bc/gui/sap/its/webgui?sap-client=001&sap-language=DE aufgerufen wird, erscheint am Edge die Zertifikatsauswahl, obwohl nur ein passendes Zertifikat vorhanden ist.

Ganz genau, an exakt dieser Stelle würden im Problemfall jetzt alle passenden TLS-Zertifikate angezeigt werden und der Benutzer müsste die Auswahl treffen.

Technischer Hintergrund der Policy – Beschreibung von Microsoft

AutoSelectCertificateForUrls 

Policy Name:    AutoSelectCertificateForUrls

Description:      Automatically select client certificates for these sites

Policy Path:       Microsoft Edge\Content settings

Compatibility:   Microsoft Edge version 77 Windows 7 or later

Machine:            Yes | HKLM\Software\Policies\Microsoft\Edge\AutoSelectCertificateForUrls

User:                   Yes | HKCU\Software\Policies\Microsoft\Edge\AutoSelectCertificateForUrls

Specify a list of sites, based on URL patterns, for which Microsoft Edge should automatically select a client certificate, if the site requests one.

The value must be an array of stringified JSON dictionaries. Each dictionary must have the form { „pattern“: „$URL_PATTERN“, „filter“ : $FILTER }, where $URL_PATTERN is a content setting pattern. $FILTER restricts from which client certificates the browser will automatically select.

Independent of the filter, only certificates will be selected that match the server’s certificate request. For example, if $FILTER has the form { „ISSUER“: { „CN“: „$ISSUER_CN“ } }, additionally only client certificates are selected that are issued by a certificate with the CommonName $ISSUER_CN.

If $FILTER contains an „ISSUER“ and a „SUBJECT“ section, a client certificate must satisfy both conditions to be selected. If $FILTER specifies an organization („O“), a certificate must have at least one organization which matches the specified value to be selected. If $FILTER specifies an organization unit („OU“), a certificate must have at least one organization unit which matches the specified value to be selected. If $FILTER is the empty dictionary {}, the selection of client certificates is not additionally restricted.

If you don’t configure this policy, auto-selection isn’t done for any site.

EXAMPLES

SOFTWARE\Policies\Microsoft\Edge\AutoSelectCertificateForUrls\1 = {„pattern“:“https://www.contoso.com“,“filter“:{„ISSUER“:{„CN“:“certificate issuer name“, „L“: „certificate issuer location“, „O“: „certificate issuer org“, „OU“: „certificate issuer org unit“}, „SUBJECT“:{„CN“:“certificate subject name“, „L“: „certificate subject location“, „O“: „certificate subject org“, „OU“: „certificate subject org unit“}}}

Konfiguration Microsoft Edge mittels Richtlinien

Download der ADMX-Templates für Edge

Infos z. B. hier: https://www.prajwaldesai.com/admx-templates-for-microsoft-edge/

Erstellen einer neuen GPO

Konfigurierte Regel: {„pattern“:“https://icm.sapnwsso.local“,“filter“:{„ISSUER“:{„CN“:“SSO3 SLS User-CA“}, „SUBJECT“:{„O“: „Xiting GmbH“}}}

Ergebnis: Das User-Zertifikat muss O=Xiting GmbH beinhalten und von der Issuing CA SSO3 SLS User-CA ausgestellt worden sein.

Finaler Test am Client

Anwenden der Policy

Kontrolle der Policy

Test 1:                 Aufruf einer anderen Website für welche keine Policy existiert.

Ergebnis:            Zertifikatsauswahldialog (!)

Test 2:                 Aufruf der gewünschten Website

Ergebnis:            Automatische Anmeldung (!)

Carsten Olt
Kontakt

Nehmen Sie Kontakt mit uns auf!

Haben Sie Fragen zu unseren Produkten?

+41 43 422 8803
[email protected]
+49 7656 9888 155
[email protected]
+1 855 594 84 64
[email protected]
+44 1454 838 785
[email protected]
Kontakt
Termin