Delphi OpenID Connect İstemcisi

Kullanıcıları Google, Microsoft Entra ID, Okta, Auth0, Keycloak veya AWS Cognito ile oturum açtırın ve kim olduklarını bilin. Bileşen sağlayıcıyı keşfeder, tarayıcı akışını PKCE ve nonce ile yürütür ve geri gelen ID token'ı doğrular.

TsgcHTTP_OIDC_Client

OAuth2 istemcisini OpenID Connect'in kimlik katmanıyla genişletir: keşif, varsayılan olarak PKCE ve nonce, sağlayıcının imzalama anahtarlarına karşı ID token doğrulaması ve userinfo uç noktası.

Bileşen sınıfı

TsgcHTTP_OIDC_Client (sgcAuth_OIDC_Client birimi)

Platformlar

Windows, macOS, Linux, iOS, Android

Sürüm

Enterprise ve All-Access, ayrıca sgcAuth paketi. sgcWebSockets .NET içinde de mevcuttur.

Issuer'ı ayarlayın, oturum açmayı başlatın

OIDCOptions.Issuer'ı ve istemci kimlik bilgilerini ayarlayın, Start'ı çağırın ve doğrulanmış talepleri OnOIDCIDToken içinde okuyun. Uç noktalar ayarlanmadığında keşif otomatik olarak çalışır.

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();

İçeriğinde neler var

OAuth2 istemcisinin yaptığı her şey, artı bir erişim token'ını güvenilir bir kimliğe dönüştüren denetimler.

Keşif

Discover, OIDCOptions.Issuer'ın sağlayıcı yapılandırmasını okur ve yetkilendirme ile token URL'lerini, JWKSURI, UserInfoEndpoint ve EndSessionEndpoint'i doldurur. Ham JSON DiscoveryDocument içinde kalır.

Varsayılan olarak PKCE ve nonce

OIDCOptions.UsePKCE kutudan çıktığı gibi açıktır ve her oturum açma, ID token'ın yansıtması gereken taze bir Nonce gönderir; böylece ele geçirilen bir kod veya tekrar oynatılan bir token işe yaramaz.

Sıkı ID token doğrulaması

İmza, issuer, audience, süre (ClockSkew ile) ve nonce denetlenir. Yalnızca RS256, RS384, RS512, ES256 ve ES384 kabul edilir; none ve HS algoritmaları her zaman reddedilir. Sonuçlar IDToken, IDTokenClaims ve IDTokenValid içinde.

Anahtar rotasyonu halledilmiş

TsgcOIDCJWKS, sağlayıcının imzalama anahtarlarının iş parçacığı güvenli bir önbelleğidir. Bilinmeyen bir anahtar kimliğine sahip bir token, RefetchInterval ile sınırlı yeni bir indirmeyi tetikler; böylece anahtar rotasyonu yeniden başlatma gerektirmez.

Sunucu tarafı doğrulama

sgcOIDC_ValidateIDToken, REST API'nizin veya WebSocket sunucunuzun aldığı bearer token'larını aynı JWKS önbelleğine karşı doğrular. OIDCOptions.AllowedTenants, çok kiracılı Entra ID uygulamalarını kabul ettiğiniz kuruluşlarla sınırlar.

Userinfo ve OAuth2 araç kutusu

GetUserInfo, profil JSON'unu döndürür. Loopback yönlendirme sunucusu, refresh token'lar, DPoP, cihaz kodu, iptal ve iç gözlem TsgcHTTP_OAuth2_Client'tan gelir.

Spesifikasyonlar ve referanslar

Bu bileşenin uyguladığı standartlar için yetkili kaynaklar.

Belgeler ve Demolar

Bileşen referansına doğrudan bağlanın, kullanıma hazır demo projesini alın ve denemeyi indirin.

Çevrimiçi Yardım: TsgcHTTP_OIDC_Client Bu bileşen için tam özellik, metot ve olay referansı.
Demo Projesi: Demos\26.Authentication\04.OpenID_Connect Keşif, tarayıcıda oturum açma, doğrulanmış talepler, userinfo ve bağımsız bir JWT doğrulayıcı. sgcWebSockets paketi içinde gelir, denemeyi aşağıdan indirin.
Teknik Belge (PDF) Delphi ve C++ Builder için özellikler, hızlı başlangıç, kod örnekleri ve yalnızca bu bileşene ait birincil kaynak referansları.
Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz.
Blog: Passkey, SAML SSO, LDAP ve TOTP 2FA ile Delphi Oturum Açma Altı kimlik doğrulama bileşeninin tek bir Delphi uygulamasında nasıl bir araya geldiği.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

OpenID Connect ile Oturum Açma Eklemeye Hazır mısınız?

Ücretsiz denemeyi indirin ve Delphi kullanıcılarınızın zaten güvendiği kimlik sağlayıcı ile oturum açmasına izin verin.