Cliente OpenID Connect para Delphi

Inicia la sesión de tus usuarios con Google, Microsoft Entra ID, Okta, Auth0, Keycloak o AWS Cognito, y sabe quiénes son. El componente descubre el proveedor, ejecuta el flujo del navegador con PKCE y nonce, y valida el ID token que recibe.

TsgcHTTP_OIDC_Client

Extiende el cliente OAuth2 con la capa de identidad de OpenID Connect: discovery, PKCE y nonce por defecto, validación del ID token contra las claves de firma del proveedor, y el endpoint userinfo.

Clase del componente

TsgcHTTP_OIDC_Client (unidad sgcAuth_OIDC_Client)

Plataformas

Windows, macOS, Linux, iOS, Android

Edición

Enterprise

Configura el issuer e inicia el login

Configura OIDCOptions.Issuer y las credenciales del cliente, llama a Start y lee los claims validados en OnOIDCIDToken. El discovery se ejecuta automáticamente cuando los endpoints no están configurados.

uses
  sgcAuth_OIDC_Client;

// OIDC is a form field: 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, then the browser sign in with PKCE and 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 with 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();

Qué incluye

Todo lo que hace el cliente OAuth2, más las comprobaciones que convierten un access token en una identidad fiable.

Discovery

Discover lee la configuración del proveedor en OIDCOptions.Issuer y rellena las URL de autorización y token, JWKSURI, UserInfoEndpoint y EndSessionEndpoint. El JSON en bruto queda disponible en DiscoveryDocument.

PKCE y nonce por defecto

OIDCOptions.UsePKCE está activo de fábrica y cada inicio de sesión envía un Nonce nuevo que el ID token debe reflejar, de modo que un código interceptado o un token reproducido no sirven de nada.

Validación estricta del ID token

Se comprueban la firma, el issuer, la audience, la caducidad (con ClockSkew) y el nonce. Solo se aceptan RS256, RS384, RS512, ES256 y ES384; none y los algoritmos HS siempre se rechazan. Los resultados quedan en IDToken, IDTokenClaims e IDTokenValid.

Rotación de claves resuelta

TsgcOIDCJWKS es una caché segura para hilos de las claves de firma del proveedor. Un token con un key id desconocido dispara una nueva descarga, limitada por RefetchInterval, de modo que la rotación de claves no requiere reiniciar nada.

Validación en el servidor

sgcOIDC_ValidateIDToken valida los bearer tokens que recibe tu API REST o servidor WebSocket, usando la misma caché JWKS. OIDCOptions.AllowedTenants restringe las apps multiinquilino de Entra ID a las organizaciones que aceptes.

Userinfo y las herramientas de OAuth2

GetUserInfo devuelve el JSON del perfil. El servidor de redirección loopback, los refresh tokens, DPoP, el device code, la revocación y la introspección provienen de TsgcHTTP_OAuth2_Client.

Especificaciones y referencias

Fuentes autorizadas de los estándares que implementa este componente.

Documentación y Demos

Enlace directo a la referencia del componente, descarga el proyecto demo listo para ejecutar y la prueba gratuita.

Online Help — TsgcHTTP_OIDC_Client Referencia completa de propiedades, métodos y eventos de este componente.
Demo Project — Demos\26.Authentication\04.OpenID_Connect Proyecto de ejemplo listo para ejecutar. Se incluye en el paquete sgcWebSockets, descarga la prueba gratuita más abajo.
Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi y C++ Builder y referencias de fuentes primarias, solo este componente.
Manual de usuario (PDF) Manual completo que cubre todos los componentes de la biblioteca.
Blog: Inicio de sesión en Delphi con Passkeys, SAML SSO, LDAP y TOTP 2FA Cómo encajan los seis componentes de autenticación en una misma aplicación Delphi.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

¿Listo para añadir inicio de sesión con OpenID Connect?

Descarga la prueba gratuita y deja que los usuarios de tu aplicación Delphi inicien sesión con el proveedor de identidad en el que ya confían.