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 = new TsgcWebSocketHTTPServer(this);
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 = new TsgcHTTP_OAuth2_Server.Create(this);
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.


void OnOAuth2Authentication(TsgcWSConnection *Connection, TsgcHTTPOAuth2Request *OAuth2, string aUser, 
  string aPassword, ref bool Authenticated)
{
  if ((aUser == "user") and (aPassword == "secret"))
  {
    Authenticated = true;
  }
}

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.