Yalnızca istemci
Kullanıcıları başkasının kimlik sağlayıcısında oturum açtırıyorsanız, Google, Microsoft, Auth0, Okta, Keycloak, AWS Cognito, kendi kurumsal SSO'nuz, TsgcHTTP_OAuth2_Client dışında hiçbir şeye ihtiyacınız yoktur. O bileşen Standard sürümüne ve üstündeki her sürüme derlenir. Ayrıca ihtiyaç duyduğu çalışma zamanıyla paketlenmiş olarak bağımsız sgcAuth paketinde de tek başına satılır.
Yaygın olan durum budur ve bu sayfanın buraya kadarki tamamı da odur.
Bir sunucuya da ihtiyaç duyduğunuzda
Sunucu yarısına yalnızca kendi uygulamanız yetkilendirme sunucusu olduğunda ihtiyaç duyarsınız: client id'leri siz verirsiniz, oturum açma sayfasını siz barındırırsınız, API'nizin sonra güvendiği erişim token'larını siz basar ve iptal edersiniz. Bu, bir TsgcWebSocketHTTPServer bileşenine bağlanan TsgcHTTP_OAuth2_Server bileşenidir ve bir Enterprise bileşenidir.
PKCE'yi varsayılan olarak doğrular. OAuth2Options.PKCE kutudan True çıkar, dolayısıyla challenge gönderen bir istemci eşleşen bir verifier üretmek zorundadır, üretemeyen reddedilir. İstemci uygulamalarını Apps.AddApp ile kaydedin, kullanıcıları OnOAuth2Authentication içinde doğrulayın ve yeniden başlatmalar arasında token'ları AddToken ile geri yükleyin.
Aynı Enterprise katmanı, uç noktalarınızda JWT hamiline yazılı token'ları doğrulamak için TsgcHTTP_JWT_Server ve passkey'ler için TsgcWSAPIServer_WebAuthn bileşenlerini taşır. Eşleşen istemciler, TsgcHTTP_OAuth2_Client ve TsgcHTTP_JWT_Client, Standard ve üstündedir. İstemci ve sunucu farklı sürüm katmanlarında yer alır; ikisinden biri üzerine plan yapmadan önce bunu kontrol etmekte fayda var.
uses
sgcWebSocket, sgcWebSocket_Classes, sgcHTTP,
sgcHTTP_OAuth_Types, sgcHTTP_OAuth2_Server;
var
vOAuth2: TsgcHTTP_OAuth2_Server;
vServer: TsgcWebSocketHTTPServer;
begin
vOAuth2 := TsgcHTTP_OAuth2_Server.Create(nil);
vOAuth2.OAuth2Options.PKCE := True;
vOAuth2.OnOAuth2Authentication := OnOAuth2Authentication;
vOAuth2.Apps.AddApp('MyDesktopApp', 'http://127.0.0.1:8080',
'my-client-id', 'my-client-secret', 3600, True,
[auth2Code, auth2CodePKCE]);
vServer := TsgcWebSocketHTTPServer.Create(nil);
vServer.Authentication.Enabled := True;
vServer.Authentication.OAuth.OAuth2 := vOAuth2;
vServer.Port := 8080;
vServer.Active := True;
end;
procedure TForm1.OnOAuth2Authentication(Connection: TsgcWSConnection;
OAuth2: TsgcHTTPOAuth2Request; aUser, aPassword: String;
var Authenticated: Boolean);
begin
Authenticated := CheckUserInYourDatabase(aUser, aPassword);
end;