OpenID Connect Delphi Client

Fai accedere gli utenti con Google, Microsoft Entra ID, Okta, Auth0, Keycloak o AWS Cognito, e sappi chi sono. Il componente scopre il provider, esegue il flusso browser con PKCE e nonce, e convalida l'ID token che riceve.

TsgcHTTP_OIDC_Client

Estende il client OAuth2 con il livello di identità di OpenID Connect: discovery, PKCE e nonce di default, validazione dell'ID token rispetto alle chiavi di firma del provider, ed endpoint userinfo.

Classe del componente

TsgcHTTP_OIDC_Client (unit sgcAuth_OIDC_Client)

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Enterprise

Imposta l'issuer, avvia l'accesso

Imposta OIDCOptions.Issuer e le credenziali client, chiama Start, e leggi i claim convalidati in OnOIDCIDToken. La discovery viene eseguita automaticamente quando gli endpoint non sono impostati.

uses
  sgcAuth_OIDC_Client;

// OIDC è un campo del form: 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, poi l'accesso via browser con PKCE e 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 con 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();

Cosa contiene

Tutto ciò che fa il client OAuth2, più i controlli che trasformano un access token in un'identità affidabile.

Discovery

Discover legge la configurazione del provider da OIDCOptions.Issuer e popola gli URL di authorization e token, JWKSURI, UserInfoEndpoint e EndSessionEndpoint. Il JSON grezzo resta in DiscoveryDocument.

PKCE e nonce di default

OIDCOptions.UsePKCE è attivo di serie e ogni accesso invia un Nonce nuovo che l'ID token deve rispecchiare, così un code intercettato o un token replay sono inutili.

Validazione rigorosa dell'ID token

Vengono verificati firma, issuer, audience, scadenza (con ClockSkew) e nonce. Sono accettati solo RS256, RS384, RS512, ES256 ed ES384, none e gli algoritmi HS vengono sempre rifiutati. I risultati sono in IDToken, IDTokenClaims e IDTokenValid.

Rotazione delle chiavi gestita

TsgcOIDCJWKS è una cache thread safe delle chiavi di firma del provider. Un token con un key id sconosciuto attiva un nuovo download, limitato da RefetchInterval, così la rotazione delle chiavi non richiede alcun riavvio.

Validazione lato server

sgcOIDC_ValidateIDToken convalida i bearer token ricevuti dalla tua REST API o dal server WebSocket, rispetto alla stessa cache JWKS. OIDCOptions.AllowedTenants limita le app multi-tenant di Entra ID alle organizzazioni che accetti.

Userinfo e il toolbox OAuth2

GetUserInfo restituisce il JSON del profilo. Loopback redirect server, refresh token, DPoP, device code, revoca e introspection provengono da TsgcHTTP_OAuth2_Client.

Specifiche e riferimenti

Fonti autorevoli per gli standard implementati da questo componente.

Documentazione e demo

Vai al riferimento del componente, scarica il progetto demo pronto all'uso e prova la versione trial.

Guida online: TsgcHTTP_OIDC_Client Riferimento completo di proprietà, metodi ed eventi per questo componente.
Progetto demo: Demos\26.Authentication\04.OpenID_Connect Discovery, accesso via browser, claim convalidati, userinfo e un validatore JWT standalone. Incluso nel pacchetto sgcWebSockets, scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie, solo per questo componente.
Manuale utente (PDF) Manuale completo che copre tutti i componenti della libreria.
Blog: Login Delphi con Passkey, SAML SSO, LDAP e TOTP 2FA Come i sei componenti di autenticazione si integrano in un'unica applicazione Delphi.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Pronto ad aggiungere l'accesso OpenID Connect?

Scarica la versione di prova gratuita e lascia che gli utenti Delphi accedano con l'identity provider di cui già si fidano.