Client OpenID Connect pour Delphi

Connecte tes utilisateurs avec Google, Microsoft Entra ID, Okta, Auth0, Keycloak ou AWS Cognito, et sache qui ils sont. Le composant découvre le fournisseur, exécute le flux navigateur avec PKCE et nonce, et valide le jeton d'identité reçu en retour.

TsgcHTTP_OIDC_Client

Étend le client OAuth2 avec la couche d'identité d'OpenID Connect : découverte, PKCE et nonce par défaut, validation du jeton d'identité face aux clés de signature du fournisseur, et endpoint userinfo.

Classe du composant

TsgcHTTP_OIDC_Client (unit sgcAuth_OIDC_Client)

Plateformes

Windows, macOS, Linux, iOS, Android

Édition

Enterprise et All-Access, ainsi que le pack sgcAuth. Également disponible dans sgcWebSockets .NET.

Renseigne l'issuer, lance la connexion

Renseigne OIDCOptions.Issuer et les identifiants client, appelle Start, et lis les claims validés dans OnOIDCIDToken. La découverte s'exécute automatiquement quand les endpoints ne sont pas définis.

uses
  sgcAuth_OIDC_Client;

// OIDC est un champ du formulaire : 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/';

  // découverte, puis connexion navigateur avec PKCE et 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 avec 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();

Ce qu'il y a à l'intérieur

Tout ce que fait le client OAuth2, plus les vérifications qui transforment un jeton d'accès en identité fiable.

Découverte

Discover lit la configuration du fournisseur depuis OIDCOptions.Issuer et renseigne les URLs d'autorisation et de jeton, JWKSURI, UserInfoEndpoint et EndSessionEndpoint. Le JSON brut reste dans DiscoveryDocument.

PKCE et nonce par défaut

OIDCOptions.UsePKCE est activé d'office et chaque connexion envoie un Nonce nouveau que le jeton d'identité doit renvoyer, donc un code intercepté ou un jeton rejoué est inutilisable.

Validation stricte du jeton d'identité

Signature, issuer, audience, expiration (avec ClockSkew) et nonce sont vérifiés. Seuls RS256, RS384, RS512, ES256 et ES384 sont acceptés, none et les algorithmes HS sont toujours rejetés. Résultats dans IDToken, IDTokenClaims et IDTokenValid.

Rotation des clés gérée

TsgcOIDCJWKS est un cache thread-safe des clés de signature du fournisseur. Un jeton avec un identifiant de clé inconnu déclenche un nouveau téléchargement, limité par RefetchInterval, donc la rotation des clés ne nécessite aucun redémarrage.

Validation côté serveur

sgcOIDC_ValidateIDToken valide les jetons porteurs reçus par ton API REST ou ton serveur WebSocket, face au même cache JWKS. OIDCOptions.AllowedTenants restreint les applications Entra ID multi-tenants aux organisations que tu acceptes.

Userinfo et la boîte à outils OAuth2

GetUserInfo retourne le JSON du profil. Le serveur de redirection en boucle locale, les jetons de rafraîchissement, DPoP, le device code, la révocation et l'introspection proviennent de TsgcHTTP_OAuth2_Client.

Spécifications et références

Sources faisant autorité pour les standards implémentés par ce composant.

Documentation et démos

Accès direct à la référence du composant, récupère le projet de démo prêt à l'emploi et télécharge l'essai.

Aide en ligne : TsgcHTTP_OIDC_Client Référence complète des propriétés, méthodes et événements de ce composant.
Projet de démo : Demos\26.Authentication\04.OpenID_Connect Découverte, connexion navigateur, claims validés, userinfo et un validateur JWT autonome. Livré dans le paquet sgcWebSockets, télécharge l'essai ci-dessous.
Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code pour Delphi et C++ Builder et références aux sources primaires pour ce composant uniquement.
Manuel utilisateur (PDF) Manuel complet couvrant tous les composants de la bibliothèque.
Blog : Connexion Delphi avec Passkeys, SSO SAML, LDAP et TOTP 2FA Comment les six composants d'authentification s'articulent dans une seule application Delphi.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Prêt à ajouter la connexion OpenID Connect ?

Télécharge l'essai gratuit et laisse tes utilisateurs Delphi se connecter avec le fournisseur d'identité qu'ils utilisent déjà.