Delphi OpenID Connect-client

Laat gebruikers aanmelden met Google, Microsoft Entra ID, Okta, Auth0, Keycloak of AWS Cognito, en weet wie ze zijn. Het component ontdekt de provider, doorloopt de browserflow met PKCE en nonce, en valideert het ID-token dat wordt teruggegeven.

TsgcHTTP_OIDC_Client

Breidt de OAuth2-client uit met de identiteitslaag van OpenID Connect: discovery, standaard PKCE en nonce, ID-tokenvalidatie tegen de ondertekeningssleutels van de provider, en het userinfo-endpoint.

Component-class

TsgcHTTP_OIDC_Client (unit sgcAuth_OIDC_Client)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Enterprise en All-Access, plus het sgcAuth-pakket. Ook beschikbaar in sgcWebSockets .NET.

Stel de issuer in, start het aanmelden

Stel OIDCOptions.Issuer en de clientgegevens in, roep Start aan en lees de gevalideerde claims in OnOIDCIDToken. Discovery draait automatisch wanneer de endpoints niet zijn ingesteld.

uses
  sgcAuth_OIDC_Client;

// OIDC is een form-veld: 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, gevolgd door het aanmelden via browser met PKCE en 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 met 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();

Wat zit erin

Alles wat de OAuth2-client doet, plus de controles die van een access token een betrouwbare identiteit maken.

Discovery

Discover leest de providerconfiguratie van OIDCOptions.Issuer en vult de authorization- en token-URL's, JWKSURI, UserInfoEndpoint en EndSessionEndpoint. De ruwe JSON blijft beschikbaar in DiscoveryDocument.

Standaard PKCE en nonce

OIDCOptions.UsePKCE staat standaard aan en elke aanmelding stuurt een nieuwe Nonce die het ID-token moet weerspiegelen, zodat een onderschepte code of een herhaald token nutteloos is.

Strikte ID-tokenvalidatie

Handtekening, issuer, audience, vervaldatum (met ClockSkew) en nonce worden gecontroleerd. Alleen RS256, RS384, RS512, ES256 en ES384 worden geaccepteerd; none en de HS-algoritmes worden altijd geweigerd. Resultaten in IDToken, IDTokenClaims en IDTokenValid.

Sleutelrotatie geregeld

TsgcOIDCJWKS is een thread-safe cache van de ondertekeningssleutels van de provider. Een token met een onbekend key-ID activeert een nieuwe download, begrensd door RefetchInterval, zodat sleutelrotatie geen herstart vereist.

Validatie aan serverzijde

sgcOIDC_ValidateIDToken valideert de bearer-tokens die je REST API of WebSocket-server ontvangt, tegen dezelfde JWKS-cache. OIDCOptions.AllowedTenants beperkt multi-tenant Entra ID-apps tot de organisaties die je accepteert.

Userinfo en de OAuth2-toolbox

GetUserInfo geeft de profiel-JSON terug. Loopback-redirectserver, refresh tokens, DPoP, device code, revocation en introspection komen van TsgcHTTP_OAuth2_Client.

Specificaties en referenties

Gezaghebbende bronnen voor de standaarden die dit component implementeert.

Documentatie en demo's

Diepe link naar de componentreferentie, pak het kant-en-klare demoproject en download de proefversie.

Online help — TsgcHTTP_OIDC_Client Volledige property-, methode- en event-referentie voor dit component.
Demoproject — Demos\26.Authentication\04.OpenID_Connect Discovery, aanmelden via browser, gevalideerde claims, userinfo en een standalone JWT-validator. Zit in het sgcWebSockets-pakket — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi en C++ Builder en primaire bronreferenties — alleen dit component.
Gebruikershandleiding (PDF) Uitgebreide handleiding die elk component in de bibliotheek behandelt.
Blog — Delphi-login met passkeys, SAML-SSO, LDAP en TOTP 2FA Hoe de zes authenticatiecomponenten samenwerken in één Delphi-toepassing.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om OpenID Connect-aanmelden toe te voegen?

Download de gratis proefversie en laat je Delphi-gebruikers aanmelden met de identity provider die ze al vertrouwen.