Faisons un exemple simple de serveur OAuth2, en utilisant un TsgcWebSocketHTTPServer.
Créez d'abord un nouveau TsgcWebSocketHTTPServer écoutant sur le port 443 et utilisant un certificat auto-signé dans le fichier sgc.pem.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.Port := 80;
oServer.SSLOptions.Port := 443;
oServer.SSLOptions.CertFile := 'sgc.pem';
oServer.SSLOptions.KeyFile := 'sgc.pem';
oServer.SSLOptions.RootCertFile := 'sgc.pem';
oServer.SSL := True;
Créez ensuite une nouvelle instance de TsgcHTTP_OAuth2_Server et assignez-la au serveur précédemment créé.
Enregistrez une nouvelle application avec les valeurs suivantes :
Name: MyApp
RedirectURI: http://127.0.0.1:8080
ClientId: client-id
ClientSecret: client-secret
OAuth2 := TsgcHTTP_OAuth2_Server.Create(nil);
OAuth2.Apps.AddApp('MyApp', 'http://127.0.0.1:8080', 'client-id', 'client-secret');
oServer.Authentication.Enabled := True;
oServer.Authentication.OAuth.OAuth2 := OAuth2;
Ensuite, gérer l'événement OnOAuth2Authentication du composant serveur OAuth2 et implémenter votre propre méthode pour connecter les utilisateurs. J'utiliserai la paire « user/secret » pour accepter une connexion.
procedure OnAuth2Authentication(Connection: TsgcWSConnection; OAuth2: TsgcHTTPOAuth2Request; aUser,
aPassword: string; var Authenticated: Boolean);
begin
if ((aUser = 'user') and (aPassword = 'secret')) then
Authenticated := True;
end;
Enfin, démarrez le serveur et utilisez un client OAuth2 pour vous connecter ; vous pouvez par exemple utiliser le TsgcHTTP_OAuth2_Client inclus dans la bibliothèque sgcWebSockets.

Demander un nouveau jeton d'accès ; une nouvelle session de navigateur Web sera affichée et l'utilisateur doit autoriser la connexion, puis se connecter.
Si la connexion réussit, un nouveau jeton sera retourné au client. Toutes les requêtes ultérieures devront inclure ce jeton Bearer dans les en-têtes HTTP.