4D Netkit: OAuth2.0-Authentifizierung mit einem Zertifikat

Mehrere OAuth 2.0-Server, wie die Microsoft Identity Platform, bieten eine Authentifizierungsoption, die Zertifikate anstelle von Client-Geheimnissen verwendet. Dieser Ansatz verbessert die Sicherheits- und Authentifizierungsmechanismen innerhalb des Protokolls. Ab der Version 4D 20 R5 beinhaltet Netkit ein OAuth 2.0 zertifikatsbasiertes Verbindungsmanagement.

Die Verwendung des Assertion Frameworks für OAuth 2.0 Client Authentication and Authorization Grants bietet mehr Sicherheit als Client-Secrets. Es ermöglicht verschlüsselte und digital signierte Assertions, die Authentifizierungsmechanismen mit zusätzlichen Identifizierungsinformationen wie digitalen Zertifikaten oder JWTs verstärken. Dies verringert die mit der Verwaltung von Secrets verbundenen Risiken und bietet eine sicherere Methode zur Authentifizierung und Autorisierung.

Um Zertifikate zu verwenden, benötigen Sie die Berechtigung „Service“ und müssen die Eigenschaften .privateKey und .thumbprint Ihres OAuth2Provider-Objekts verwenden.

Wenn Sie Zertifikate mit Microsoft Identity Platform verwenden möchten:

  • Gehen Sie zur Azure App-Registrierungsschnittstelle und laden Sie Ihr Zertifikat hoch, um Ihren Thumbprint-Code zu erhalten:

  • Sie haben nun einen gültigen Thumbprint, um Ihr Token zu erhalten:
var $params;$token : Object
var $oAuth : cs.NetKit.OAuth2Provider
var $privatekey:=File("/RESOURCES/key.pem").getText("ascii"; Document unchanged)

If (Length($t_privatekey)>0)
	$params:=New object()
	$params.name:="Microsoft"
	// Only usable with permission:="Service"
	$params.permission:="Service"
	$params.clientId:="8008ebf5-xxx"
	
	$params.scope:="https://graph.microsoft.com/.default"
	$params.tenant:="16dc191b-xxx"
	$params.clientEmail:=$myClientEmail
	
	// Certificate private key
        $params.privateKey:=$t_privatekey
        // Thumbprint of certificate / public key can be copied in Azure portal at certificated & secrets
	$params.thumbprint:="A4CC91B864xxx"  
	
	$oAuth:=cs.NetKit.OAuth2Provider.new($params)
	$token:=$cs_oAuth.getToken()
End if 

Zusammenfassend lässt sich sagen, dass die Verwendung einer auf OAuth 2.0-Zertifikaten basierenden Authentifizierung, wie in RFC 7521 beschrieben, die Sicherheitsmaßnahmen gegenüber Client-Secrets verbessert. Durch Befolgung der Dokumentationsrichtlinien können Entwickler Zertifikate sicher in OAuth 2.0-Server wie die Microsoft Identity Platform integrieren und so robuste Authentifizierungsmechanismen für Anwendungen gewährleisten.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené gehört seit November 2016 zum 4D Program Team. Als Product Owner ist er verantwortlich für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen. Seine Aufgabe ist es auch, sicherzustellen, dass die gelieferte Funktionsimplementierung den Kundenanforderungen entspricht.Nach seinem Bachelor-Abschluss in Informatik am CNAM arbeitete Fabrice als Windev-Entwickler bei einem kleinen Software-Verlag. Danach arbeitete er für verschiedene Unternehmen in Industrie und Handel als Windev- und Webentwickler sowie als technischer Berater für neue Funktionen.