OAuth2 | Server Example

Bir TsgcWebSocketHTTPServer kullanarak basit bir OAuth2 sunucu örneği yapalım.

 

İlk olarak, port 443'te dinleyen ve sgc.pem dosyasında kendinden imzalı bir sertifika kullanan yeni bir TsgcWebSocketHTTPServer oluşturun.


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;

Ardından TsgcHTTP_OAuth2_Server'ın yeni bir örneğini oluşturun ve daha önce oluşturulmuş sunucuya atayın.

Aşağıdaki değerlerle yeni bir Uygulama kaydedin:

 

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;

Ardından OAuth2 sunucu bileşeninin OnOAuth2Authentication olayını işleyin ve kullanıcıları oturum açmak için kendi yönteminizi uygulayın. Bir oturum açmayı kabul etmek için "user/secret" çiftini kullanacağım.


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

Son olarak sunucuyu başlatın ve oturum açmak için bir OAuth2 istemcisi kullanın, örneğin sgcWebSockets kütüphanesiyle birlikte gelen TsgcHTTP_OAuth2_Client öğesini kullanabilirsiniz.

 

 

Yeni bir Access Token talep edin, yeni bir Web Tarayıcısı oturumu gösterilir ve kullanıcı bağlantıya İzin Vermeli ve ardından oturum açmalıdır.

 

 

Oturum açma başarılı olursa, istemciye yeni bir Token döndürülür. Ardından tüm isteklerin HTTP Başlıklarında bu bearer token'ı içermesi gerekir.