Delphi OpenID Connect 클라이언트
Google, Microsoft Entra ID, Okta, Auth0, Keycloak, AWS Cognito로 사용자를 로그인시키고 신원을 확인하세요. 이 컴포넌트는 제공자를 자동으로 찾아내고, PKCE와 nonce로 브라우저 플로우를 실행하며, 반환된 ID 토큰을 검증해요.
Google, Microsoft Entra ID, Okta, Auth0, Keycloak, AWS Cognito로 사용자를 로그인시키고 신원을 확인하세요. 이 컴포넌트는 제공자를 자동으로 찾아내고, PKCE와 nonce로 브라우저 플로우를 실행하며, 반환된 ID 토큰을 검증해요.
OAuth2 클라이언트에 OpenID Connect의 신원 계층을 더해요. 기본으로 켜지는 디스커버리, PKCE, nonce, 제공자의 서명 키로 하는 ID 토큰 검증, userinfo 엔드포인트를 제공해요.
TsgcHTTP_OIDC_Client (유닛 sgcAuth_OIDC_Client)
Windows, macOS, Linux, iOS, Android
Enterprise와 All-Access, 그리고 sgcAuth 팩이에요. sgcWebSockets .NET에서도 제공해요.
OIDCOptions.Issuer와 클라이언트 자격 증명을 설정하고, Start를 호출한 다음, OnOIDCIDToken에서 검증된 클레임을 읽으세요. 엔드포인트를 설정하지 않으면 디스커버리가 자동으로 실행돼요.
uses
sgcAuth_OIDC_Client;
// OIDC는 폼 필드예요: 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/';
// 디스커버리를 먼저 실행한 다음, PKCE와 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 // sub, email, name 등을 담은 JSON
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();
OAuth2 클라이언트가 하는 모든 것에, 액세스 토큰을 신뢰할 수 있는 신원으로 바꿔주는 검증 과정을 더했어요.
Discover가 OIDCOptions.Issuer의 제공자 설정을 읽어 인증 및 토큰 URL, JWKSURI, UserInfoEndpoint, EndSessionEndpoint를 채워요. 원본 JSON은 DiscoveryDocument에 남아요.
OIDCOptions.UsePKCE는 기본으로 켜져 있으며, 로그인할 때마다 새 Nonce를 보내고 ID 토큰이 이를 그대로 반환해야 하므로, 가로챈 코드나 재전송된 토큰은 쓸모가 없어요.
서명, 발급자, 대상, ClockSkew를 반영한 만료 시각, nonce를 검증해요. RS256, RS384, RS512, ES256, ES384만 허용하며 none이나 HS 계열 알고리즘은 항상 거부해요. 결과는 IDToken, IDTokenClaims, IDTokenValid에 담겨요.
TsgcOIDCJWKS는 제공자 서명 키의 스레드 안전 캐시예요. 알 수 없는 키 ID를 가진 토큰이 오면 새로 다운로드하며, 다운로드 빈도는 RefetchInterval로 제한되므로 키 회전에 재시작이 필요 없어요.
sgcOIDC_ValidateIDToken이 같은 JWKS 캐시를 이용해 REST API나 WebSocket 서버가 받는 Bearer 토큰을 검증해요. OIDCOptions.AllowedTenants로 다중 테넌트 Entra ID 앱을 허용한 조직으로만 제한할 수 있어요.
GetUserInfo는 프로필 JSON을 반환해요. 루프백 리디렉션 서버, 리프레시 토큰, DPoP, 디바이스 코드, 취소, 인트로스펙션은 모두 TsgcHTTP_OAuth2_Client에서 그대로 제공돼요.
이 컴포넌트가 구현하는 표준의 공식 출처예요.
컴포넌트 레퍼런스 링크, 즉시 실행 가능한 데모 프로젝트, 체험판 다운로드를 제공해요.
| 온라인 도움말 — TsgcHTTP_OIDC_Client 이 컴포넌트의 전체 속성, 메서드, 이벤트 레퍼런스예요. | Open | |
| Demo Project — Demos\26.Authentication\04.OpenID_Connect 디스커버리, 브라우저 로그인, 검증된 클레임, userinfo, 독립 실행형 JWT 검증기예요. sgcWebSockets 패키지에 포함돼 있어요, 아래에서 체험판을 다운로드하세요. | Open | |
| 기술 문서 (PDF) 이 컴포넌트만을 위한 기능, 빠른 시작, Delphi 및 C++ Builder 코드 샘플, 1차 출처 참조예요. | Open | |
| 사용자 설명서 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 설명서예요. | Open | |
| 블로그 — Delphi에서 패스키, SAML SSO, LDAP, TOTP 2FA로 로그인하기 여섯 개의 인증 컴포넌트가 하나의 Delphi 애플리케이션에서 어떻게 맞물리는지 설명해요. | Open |