OAuth2 | Przykład serwerowy

Poniżej przedstawiono prosty przykład serwera OAuth2 z użyciem TsgcWebSocketHTTPServer.

 

Najpierw należy utworzyć nowy TsgcWebSocketHTTPServer nasłuchujący na porcie 443 i używający certyfikatu z podpisem własnym w pliku 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;

Następnie utwórz nową instancję TsgcHTTP_OAuth2_Server i przypisz ją do wcześniej utworzonego serwera.

Zarejestruj nową aplikację, podając następujące wartości:

 

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;

Następnie należy obsłużyć zdarzenie OnOAuth2Authentication komponentu serwera OAuth2 i zaimplementować własną metodę logowania użytkowników. Do akceptowania logowania zostanie użyta para „user/secret".


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

Na koniec uruchom serwer i użyj klienta OAuth2 do logowania; przykładowo można skorzystać z komponentu TsgcHTTP_OAuth2_Client dołączonego do biblioteki sgcWebSockets.

 

 

Żądanie nowego tokenu dostępu — zostanie wyświetlona nowa sesja przeglądarki internetowej, w której użytkownik musi zezwolić na połączenie i zalogować się.

 

 

Jeśli logowanie zakończy się pomyślnie, do klienta zostanie zwrócony nowy token. Następnie wszystkie żądania muszą zawierać ten token Bearer w nagłówkach HTTP.