OAuth2 | Servervoorbeeld

Laten we een eenvoudig OAuth2-servervoorbeeld doen, met een TsgcWebSocketHTTPServer.

 

Maak eerst een nieuwe TsgcWebSocketHTTPServer aan die luistert op poort 443 en een zelfondertekend certificaat gebruikt in het bestand 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;

Maak vervolgens een nieuw exemplaar van TsgcHTTP_OAuth2_Server aan en wijs dit toe aan de eerder aangemaakte server.

Registreer een nieuwe applicatie met de volgende waarden:

 

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;

Behandel vervolgens de OnOAuth2Authentication-gebeurtenis van het OAuth2-servercomponent en implementeer uw eigen methode om gebruikers in te loggen. Ik zal het paar "user/secret" gebruiken om een login te accepteren.


procedure OnAuth2Authentication(Connection: TsgcWSConnection; OAuth2: TsgcHTTPOAuth2Request; aUser, 
  aPassword: string; var Authenticated: Boolean);
begin
  if ((aUser = 'user') and (aPassword = 'secret')) then
    Authenticated := True;
end;

Start ten slotte de server en gebruik een OAuth2-client om in te loggen; u kunt bijvoorbeeld de TsgcHTTP_OAuth2_Client gebruiken die is meegeleverd met de sgcWebSockets-bibliotheek.

 

 

Vraag een nieuw toegangstoken aan; er wordt een nieuwe webbrowsersessie weergegeven en de gebruiker moet de verbinding toestaan en vervolgens inloggen.

 

 

Als de aanmelding succesvol is, wordt een nieuw token geretourneerd aan de client. Alle vervolg-verzoeken moeten dit bearer-token opnemen in de HTTP-headers.