OpenID Connect w Delphi
Loguj użytkowników przez Google, Microsoft Entra ID, Okta, Auth0, Keycloak lub AWS Cognito i wiedz, kim są. Komponent wykrywa dostawcę, uruchamia przepływ w przeglądarce z PKCE i nonce oraz waliduje otrzymany token ID.
Loguj użytkowników przez Google, Microsoft Entra ID, Okta, Auth0, Keycloak lub AWS Cognito i wiedz, kim są. Komponent wykrywa dostawcę, uruchamia przepływ w przeglądarce z PKCE i nonce oraz waliduje otrzymany token ID.
Rozszerza klienta OAuth2 o warstwę tożsamości OpenID Connect: discovery, PKCE i nonce domyślnie, walidację tokenu ID względem kluczy podpisujących dostawcy oraz endpoint userinfo.
TsgcHTTP_OIDC_Client (jednostka sgcAuth_OIDC_Client)
Windows, macOS, Linux, iOS, Android
Enterprise i All-Access, a także pakiet sgcAuth. Dostępny również w sgcWebSockets .NET.
Ustaw OIDCOptions.Issuer i dane klienta, wywołaj Start i odczytaj zwalidowane roszczenia w OnOIDCIDToken. Discovery uruchamia się automatycznie, gdy endpointy nie są ustawione.
uses
sgcAuth_OIDC_Client;
// OIDC to pole formularza: OIDC: TsgcHTTP_OIDC_Client;
procedure TForm1.SignIn;
begin
OIDC := TsgcHTTP_OIDC_Client.Create(nil);
OIDC.OnOIDCIDToken := OnOIDCIDTokenEvent;
OIDC.OIDCOptions.Issuer := 'https://accounts.google.com';
OIDC.OAuth2Options.ClientId := 'your-client-id';
OIDC.OAuth2Options.ClientSecret := 'your-client-secret';
OIDC.AuthorizationServerOptions.Scope.Clear;
OIDC.AuthorizationServerOptions.Scope.Add('openid');
OIDC.AuthorizationServerOptions.Scope.Add('profile');
OIDC.AuthorizationServerOptions.Scope.Add('email');
OIDC.LocalServerOptions.IP := '127.0.0.1';
OIDC.LocalServerOptions.Port := 8080;
OIDC.LocalServerOptions.RedirectURL := 'http://127.0.0.1:8080/';
// discovery, następnie logowanie w przeglądarce z PKCE i nonce
OIDC.Start;
end;
procedure TForm1.OnOIDCIDTokenEvent(Sender: TObject; const aClaims: string;
aValid: Boolean; const aError: string);
begin
if aValid then
Memo1.Lines.Text := aClaims // JSON z sub, email, name...
else
ShowMessage(aError);
end;
// uses: sgcAuth_OIDC_Client
TsgcHTTP_OIDC_Client *OIDC = new TsgcHTTP_OIDC_Client(this);
OIDC->OnOIDCIDToken = OnOIDCIDTokenEvent;
OIDC->OIDCOptions->Issuer = "https://accounts.google.com";
OIDC->OAuth2Options->ClientId = "your-client-id";
OIDC->OAuth2Options->ClientSecret = "your-client-secret";
OIDC->AuthorizationServerOptions->Scope->Clear();
OIDC->AuthorizationServerOptions->Scope->Add("openid");
OIDC->AuthorizationServerOptions->Scope->Add("profile");
OIDC->AuthorizationServerOptions->Scope->Add("email");
OIDC->LocalServerOptions->IP = "127.0.0.1";
OIDC->LocalServerOptions->Port = 8080;
OIDC->LocalServerOptions->RedirectURL = "http://127.0.0.1:8080/";
OIDC->Start();
Wszystko, co robi klient OAuth2, plus weryfikacje, które zamieniają token dostępu w wiarygodną tożsamość.
Discover odczytuje konfigurację dostawcy z OIDCOptions.Issuer i wypełnia adresy URL autoryzacji i tokenu, JWKSURI, UserInfoEndpoint i EndSessionEndpoint. Surowy JSON pozostaje w DiscoveryDocument.
OIDCOptions.UsePKCE jest włączone od razu, a każde logowanie wysyła świeży Nonce, który token ID musi zwrócić, więc przechwycony kod lub powtórzony token są bezużyteczne.
Sprawdzane są podpis, wydawca, odbiorca, wygaśnięcie (z ClockSkew) i nonce. Akceptowane są wyłącznie RS256, RS384, RS512, ES256 i ES384, none i algorytmy HS są zawsze odrzucane. Wyniki w IDToken, IDTokenClaims i IDTokenValid.
TsgcOIDCJWKS to bezpieczny wątkowo cache kluczy podpisujących dostawcy. Token z nieznanym identyfikatorem klucza wywołuje nowe pobranie, ograniczone przez RefetchInterval, więc rotacja kluczy nie wymaga restartu.
sgcOIDC_ValidateIDToken waliduje tokeny bearer otrzymywane przez Twoje API REST lub serwer WebSocket, względem tego samego cache JWKS. OIDCOptions.AllowedTenants ogranicza wielodzierżawcze aplikacje Entra ID do akceptowanych organizacji.
GetUserInfo zwraca JSON profilu. Lokalny serwer przekierowań, tokeny odświeżania, DPoP, kod urządzenia, unieważnianie i introspekcja pochodzą z TsgcHTTP_OAuth2_Client.
Autorytatywne źródła dla standardów implementowanych przez ten komponent.
Przejdź do dokumentacji komponentu, pobierz gotowy projekt demo i wersję próbną.
| Pomoc online — TsgcHTTP_OIDC_Client Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu. | Open | |
| Projekt demo — Demos\26.Authentication\04.OpenID_Connect Discovery, logowanie w przeglądarce, zwalidowane roszczenia, userinfo i samodzielny walidator JWT. Dołączony do pakietu sgcWebSockets — pobierz wersję próbną poniżej. | Open | |
| Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odwołania do źródeł — tylko dla tego komponentu. | Open | |
| Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki. | Open | |
| Blog: Logowanie w Delphi z Passkeys, SAML SSO, LDAP i TOTP 2FA Jak sześć komponentów uwierzytelniania współpracuje w jednej aplikacji Delphi. | Open |