Klient OAuth2 dla Delphi

Komponent klienta OAuth 2.0 / OAuth 2.1 — Authorization Code z PKCE, Client Credentials, Device Code, rotacja tokenów odświeżania i wbudowany przepływ przeglądarki.

TsgcHTTP_OAuth2_Client

Implementuje stronę klienta OAuth 2.0 / 2.1 — obsługuje przepływy Authorization Code (z PKCE), Client Credentials, Device Code i tokenów odświeżania. Zawiera wbudowany mały nasłuchiwacz HTTP dla URI przekierowania.

Klasa komponentu

TsgcHTTP_OAuth2_Client

Platformy

Windows, macOS, Linux, iOS, Android

Edycja

Standard / Professional / Enterprise

Skonfiguruj dostawcę i uruchom przepływ

Skonfiguruj ClientId / ClientSecret / Scope / Endpoints (lub użyj presetu dostawcy dla Google / Microsoft / GitHub), wywołaj Start, a następnie użyj Token w swoich wywołaniach HTTP.

uses
  sgcHTTP, sgcHTTP_OAuth_Types;

// OAuth2 is a form field: OAuth2: TsgcHTTP_OAuth2_Client;
procedure TForm1.Authorize;
begin
  OAuth2 := TsgcHTTP_OAuth2_Client.Create(nil);
  OAuth2.OnAfterAccessToken := OnAfterAccessTokenEvent;

  OAuth2.OAuth2Options.GrantType    := auth2CodePKCE;
  OAuth2.OAuth2Options.ClientId     := 'your-client-id';
  OAuth2.OAuth2Options.ClientSecret := 'your-client-secret';

  OAuth2.AuthorizationServerOptions.AuthURL  := 'https://auth.example.com/authorize';
  OAuth2.AuthorizationServerOptions.TokenURL := 'https://auth.example.com/token';
  OAuth2.AuthorizationServerOptions.Scope.Clear;
  OAuth2.AuthorizationServerOptions.Scope.Add('profile');
  OAuth2.AuthorizationServerOptions.Scope.Add('email');

  OAuth2.LocalServerOptions.IP          := '127.0.0.1';
  OAuth2.LocalServerOptions.Port        := 5555;
  OAuth2.LocalServerOptions.RedirectURL := 'http://localhost:5555/callback';

  // Spawns the user browser at the auth URL and returns immediately
  OAuth2.Start;
end;

// ... the user logs in, the browser is redirected to the callback URL,
// ... the component captures the code and exchanges it for tokens
procedure TForm1.OnAfterAccessTokenEvent(Sender: TObject; const Access_Token,
  Token_Type, Expires_In, Refresh_Token, Scope, RawParams: String;
  var Handled: Boolean);
begin
  ShowMessage(Access_Token);
end;
// uses: sgcHTTP, sgcHTTP_OAuth_Types
TsgcHTTP_OAuth2_Client *OAuth2 = new TsgcHTTP_OAuth2_Client(this);
OAuth2->OnAfterAccessToken = OnAfterAccessTokenEvent;

OAuth2->OAuth2Options->GrantType    = auth2CodePKCE;
OAuth2->OAuth2Options->ClientId     = "your-client-id";
OAuth2->OAuth2Options->ClientSecret = "your-client-secret";

OAuth2->AuthorizationServerOptions->AuthURL  = "https://auth.example.com/authorize";
OAuth2->AuthorizationServerOptions->TokenURL = "https://auth.example.com/token";
OAuth2->AuthorizationServerOptions->Scope->Clear();
OAuth2->AuthorizationServerOptions->Scope->Add("profile");
OAuth2->AuthorizationServerOptions->Scope->Add("email");

OAuth2->LocalServerOptions->IP          = "127.0.0.1";
OAuth2->LocalServerOptions->Port        = 5555;
OAuth2->LocalServerOptions->RedirectURL = "http://localhost:5555/callback";

OAuth2->Start();

Co jest w środku

Implementuje interfejs klienta OAuth 2.0 z PKCE, rotacją tokenów odświeżania i wbudowanym nasłuchiwaczem przekierowania loopback.

Przepływy

Authorization Code (z opcjonalnym PKCE wg RFC 7636), Client Credentials (RFC 6749 §4.4), Device Code (RFC 8628) i Refresh Token (RFC 6749 §6) są obsługiwane jako typowane metody.

PKCE domyślnie

Ustaw OAuth2Options.GrantType na auth2CodePKCE, komponent generuje parę code_verifier / code_challenge i dołącza je zgodnie z RFC 7636 (obowiązkowe w OAuth 2.1).

Presety dostawców

Komponenty pochodne TsgcHTTP_OAuth2_Client_Google i TsgcHTTP_OAuth2_Client_Microsoft dostarczane są z wstępnie wypełnionymi właściwymi punktami końcowymi i zakresami. Do pozostałych dostawców użyj klasy bazowej.

Nasłuchiwacz przekierowania loopback

Komponent uruchamia mały wbudowany nasłuchiwacz HTTP na skonfigurowanym RedirectURL, przechwytuje kod autoryzacji, a następnie zatrzymuje nasłuchiwacz — nie jest wymagany zewnętrzny serwer WWW.

Trwałość tokenów

Odczytaj CurrentRefreshToken po autoryzacji i zapisz go we własnej aplikacji, a przy kolejnym uruchomieniu wywołaj Refresh, dzięki czemu użytkownik nie jest pytany ponownie.

Integracja z HTTP / WebSocket

Połącz z TsgcHTTPClient, TsgcHTTP2Client lub TsgcWebSocketClient przez Authentication.Token.OAuth — token bearer jest wstrzykiwany automatycznie w każdym żądaniu.

Specyfikacje i odniesienia

Autorytatywne źródła standardów implementowanych przez ten komponent.

Dokumentacja i dema

Przejdź bezpośrednio do dokumentacji komponentu, pobierz gotowy do uruchomienia projekt demonstracyjny i pobierz wersję próbną.

Pomoc online — TsgcHTTP_OAuth2_Client Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu.
Projekt demonstracyjny — Demos\20.HTTP_Protocol\02.OAuth2_Authentication Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej.
Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odniesienia do źródeł — tylko ten komponent.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Gotowy, żeby dodać OAuth 2.0 do Delphi?

Pobierz bezpłatną wersję próbną i zintegruj uwierzytelnianie OAuth 2.0 / 2.1 ze swoimi aplikacjami Delphi.