OAuth2 Provider | Authentication

Die OAuth2-Provider-Server-Komponente ermöglicht es Ihnen, sich über einen externen OAuth2-Anbieter (wie Azure AD oder Google) zu authentifizieren, um auf die geschützten Ressourcen Ihres Servers zuzugreifen. Beispiel: Sie können Ihren HTTP-Server so konfigurieren, dass sich Benutzer mit Azure-Anmeldedaten anmelden können; wenn die Anmeldung erfolgreich ist, dürfen diese Benutzer auf die geschützten Ressourcen Ihres Servers zugreifen.

 

Der Authentifizierungsprozess erfolgt auf der Serverseite, und die OAuth2-Tokens werden nicht mit den Clients geteilt. Dies bedeutet, dass Azure, wenn sich der Benutzer zum Beispiel über Azure anmeldet und die Authentifizierung erfolgreich ist, ein Access-Token zurückgibt, das es Ihnen ermöglicht, Anfragen an den Azure-Server zu senden, um (je nach Scope) einige Informationen über das Benutzerprofil, E-Mails usw. zu erhalten. Dieses Access-Token WIRD NICHT GETEILT mit dem Client (zum Beispiel einem Webbrowser); anstatt das Access-Token an den Client zurückzugeben, erstellt der Server eine zufällige ID, die intern mit dem Access-Token verknüpft ist, sodass der Client (Webbrowser) jedes Mal, wenn er einen Aufruf an den OAuth2-Server durchführen möchte, die öffentliche ID verwendet, und der Server verwendet diese ID, um das OAuth2-Access-Token abzurufen, um die HTTP-Anfragen zu proxyen.

 

Nachfolgend finden Sie ein Beispiel dafür, wie die OAuth2-Authentifizierung funktioniert. Das Beispiel verwendet die Azure-AD-Konfiguration, die im folgenden Link beschrieben wird: OAuth2 Provider Azure AD.

 

Den Server starten

 

Der Server beginnt, auf localhost und Port 443 zu lauschen. Der sgcWebSockets-HTTP-Server ist mit der OAuth2-Server-Provider-Komponente verknüpft und die Eigenschaft Authentication ist aktiviert.

Bevor der Server gestartet wird, wird der Azure-OAuth2-Provider mit dem folgenden Methodenaufruf registriert.

 

RegisterProvider(
'azure',
'90945b8d-f6b7-4b97-b2bd-21c3c90b5f3x',
'PN67Q~5m06c-~X_GMyMf9zMntmm5l2dt~3jVq',
'https://login.microsoftonline.com/a0ca2055-5dd1-467f-bf13-291f6fd715c6/oauth2/v2.0/authorize',
'https://login.microsoftonline.com/a0ca2055-5dd1-467f-bf13-291f6fd715c6/oauth2/v2.0/token',
'user.read',
'/login',
'https://localhost/callback'
);

 

 

User Logins

 

Der Benutzer öffnet einen neuen Webbrowser und geht zum Endpunkt '/login'.

Der Server erkennt, dass der '/login'-Endpunkt zur Anmeldung über den Azure-Anbieter verwendet wird, und leitet weiter zu

 

https://login.microsoftonline.com/a0ca2055-5dd1-467f-bf13-291f6fd715c6/oauth2/v2.0/authorize

 

Und der OAuth2-Authentifizierungsablauf beginnt.

 

OAuth2-Authentifizierung

 

Der Benutzer wird zum Authentifizierungsendpunkt des OAuth2-Servers umgeleitet; nun muss er sich mit den Anmeldedaten anmelden und die Bedingungen der OAuth2-Anwendung akzeptieren.

 

Wenn die Autorisierung erfolgreich ist, sendet Azure AD einen Code an die URL

 

https://localhost/callback

 

Den OAuth2-Code validieren

 

Nun hat der Server einen Code von Azure empfangen und stellt eine interne Verbindung zu Azure her (von Server zu Server), um zu validieren, dass dieser Token korrekt ist (und um zu verhindern, dass jemand versucht, den Server zu hacken).

 

Der Server verbindet sich mit

 

https://login.microsoftonline.com/a0ca2055-5dd1-467f-bf13-291f6fd715c6/oauth2/v2.0/token

 

Beim Übergeben einiger Parameter wie des empfangenen Codes und des clientsecret gibt Azure, wenn die Validierung erfolgreich ist, das Access Token zurück, das verwendet werden kann, um auf die geschützten Azure-Ressourcen zuzugreifen, wie das Lesen des Profils, der E-Mail...

 

Erfolgreiches Zugriffstoken

 

Wenn der Server ein erfolgreiches AccessToken empfängt, wird das Ereignis OnOAuth2ProviderTokenValid aufgerufen, sodass Sie hier konfigurieren können, wie das AccessToken gespeichert wird (falls überhaupt), indem Sie auf die Parameterklasse TsgcHTTPOAuth2ProviderToken zugreifen

 

AccesToken: ist das von Azure zurückgegebene OAuth2-Token

ID: ist der öffentliche Bezeichner, der als Cookie gespeichert wird.

 

In diesem Ereignis können Sie konfigurieren, was nach einer erfolgreichen Authentifizierung geschehen soll, Beispiel: Wenn Sie den Benutzer zur privaten URL umleiten möchten, verwenden Sie Folgendes

 

Response.Redirect.URL := 'https://localhost/private';

 

Anfragen an Azure senden

 

Nun können Sie Anfragen an den Azure-Server senden, indem Sie die als Cookie gespeicherte Public ID verwenden.

Beispiel: Wenn Sie die Profildaten lesen möchten, verwenden Sie die folgende Methode.

 

Get('ID', 'https://graph.microsoft.com/v1.0/me');

 

Dabei ist ID der öffentliche ID-Bezeichner.