sgcAuth 機能一覧: OAuth2、JWT & WebAuthn | eSeGeCe

sgcAuth 機能一覧

sgcAuth でできることすべてを、2 つのクライアントコンポーネント、それらが実装するグラントタイプとクレーム、そして sgcCustomIndy と組み合わせてパックが解放する WebAuthn の機能に対応付けて示します。すべての機能は Delphi と C++ Builder で同じように動作し、すべてのライセンスに完全なソースコードが付属します。

OAuth2

5 つのグラントタイプを 1 つのコンポーネントで

JWT

署名、アタッチ、検証

WebAuthn

sgcCustomIndy 経由のパスキー

規格とプラットフォーム

Delphi 7 から 13、C++ Builder

sgcAuth は単体で完結しています。sgcWebSockets Core ランタイムを同梱して出荷されるため、OAuth2 と JWT のクライアントについてはアドオンではありません。

sgcWebSockets にも含まれます。OAuth2 クライアントと JWT クライアントは、いずれも sgcWebSockets の Standard エディション以上にも含まれています。All-Access にはすべてが含まれます。sgcAuth は、認証クライアントだけを必要とするチーム向けの単体パッケージです。

2 つのパレットコンポーネント

同じ問題の 2 つの側面が、SGC Auth パレットページに登録されます。

コンポーネントクラス役割説明
OAuth2 クライアントTsgcHTTP_OAuth2_Clientトークンを取得任意の OAuth2/OIDC プロバイダーに対して、Authorization Code、PKCE、Client Credentials、Resource Owner Password、Device Code の各グラントを実行し、ローカルリダイレクトサーバーを内蔵しています。
JWT クライアントTsgcHTTP_JWT_Clientトークンに署名JSON Web Token を構築・署名・検証します。単体でも、TsgcWebSocketClient、TsgcHTTP1Client、TsgcHTTP2Client の Bearer トークン供給源としても機能します。

5 つのグラントタイプを 1 つのコンポーネントで

TsgcHTTP_OAuth2_Client は OAuth 2.0(RFC 6749)をエンドツーエンドでカバーします。フローを開始し、リダイレクトを受け取り、コードをトークンに交換し、その後のトークンを管理します。

機能API備考
Authorization CodeOAuth2Options.GrantType := auth2Codeクライアントシークレットを保持できる、信頼できるサーバーサイド Web アプリケーション向けの標準フローです。
Authorization Code + PKCEauth2CodePKCE(RFC 7636)同じフローに Proof Key for Code Exchange を加えたもので、シークレットを保持できないネイティブ・モバイル・シングルページアプリ向けです。
Client Credentialsauth2ClientCredentialsユーザーを介さないサーバー間の呼び出しです。デーモンやサービスアカウント向け。
Resource Owner Passwordauth2ResourceOwnerPasswordアプリケーションがユーザーのパスワードを直接受け取り、トークンに交換します。
Device Codeauth2DeviceCode(RFC 8628)入力に制約のあるデバイス、スマート TV、メディアコンソール、IoT 向け。本人が別のデバイスで入力するユーザーコードを表示します。
クライアント IDOAuth2Options.ClientIdClientSecretUsernamePasswordお使いのプロバイダーの API 仕様に従って設定します。Username/Password は、トークンエンドポイントで Basic 認証を要求するプロバイダー向けです。
プロバイダーのエンドポイントAuthorizationServerOptions.AuthURLTokenURLScopeRevocationURLIntrospectionURLプロバイダーの OAuth2/OIDC ドキュメントに公開されている URL とスコープの一覧です。
ソーシャルプリセットTsgcHTTP_OAuth2_Client_GoogleTsgcHTTP_OAuth2_Client_MicrosoftGoogle と Microsoft のエンドポイントとスコープをあらかじめ設定した、既製のディセンダントです。
ローカルリダイレクトリスナーLocalServerOptions.IPPortRedirectURLauthorization-code のリダイレクトを受け取るために起動する小さな HTTP サーバーです。既定ではポート 8080、デスクトップアプリではランダムなポートを選ぶ 0 も指定できます。
フローの実行StartStopStart がシステムブラウザを開き(またはデバイスコードを発行し)、設定したグラントを開始します。Stop はそれを中断し、ローカルリスナーを停止します。
リフレッシュRefreshブラウザを再度往復させることなく、リフレッシュトークンを新しいアクセストークンに交換します。
失効 & イントロスペクトRevoke(RFC 7009)、Introspect(RFC 7662)トークンを無効化する、またはプロバイダー側でその状態とメタデータを照会します。
DPoPDPoPOptionsGenerateDPoPKeyPairOnDPoPSignトークンを鍵ペアに紐付けるプロバイダー向けの、Demonstrating Proof-of-Possession(RFC 9449)の鍵素材と署名です。
HTTP トランスポートHTTPClientOptionstoken、revocation、introspection の各エンドポイントに POST する内部 HTTP クライアントの TLS とログ設定です。
ライフサイクルイベントOnBeforeAuthorizeCodeOnAfterAuthorizeCodeOnBeforeAccessTokenOnAfterAccessTokenOnBeforeRefreshTokenOnAfterRefreshTokenフローの各ステップの前後に対応する一対のイベントです。
エラーイベントOnErrorAccessTokenOnErrorAuthorizeCodeOnErrorRefreshTokenOnErrorRevokeTokenOnErrorIntrospectTokenフロー中の各失敗ポイントに 1 つずつ対応し、プロバイダーのエラー、説明、URI を伴います。
Device Code イベントOnDeviceCodeOnDeviceCodeExpired表示すべきユーザーコードと検証用 URI を渡し、ユーザーが時間内に認可を完了しなかった場合に発生します。

署名、アタッチ、検証

TsgcHTTP_JWT_Client は、1 つの JWTOptions プロパティを通じて RFC 7519(JSON Web Token)、RFC 7515(JWS)、RFC 7516(JWE)を実装します。

機能API備考
ヘッダーJWTOptions.Header.algtypkidJOSE ヘッダーです。algjwtHS256/384/512jwtRS256/384/512jwtES256/384/512 を選択でき、追加のフィールドは Header.AddKeyValue から設定します。
ペイロード / クレームJWTOptions.Payload.isssubaudexpnbfiatjtiRFC 7519 の登録済みクレームです。カスタムクレームは Payload.AddKeyValue で追加します。
署名用の鍵素材JWTOptions.Algorithms.HS.SecretRS.PrivateKeyES.PrivateKeyHMAC 用の共有シークレット、RSA または ECDSA 用の PEM 形式の秘密鍵で、Header.alg によって選択されます。
自動更新JWTOptions.RefreshTokenAfter0 より大きい場合、Signiat を更新して exp を自動的に再計算します。0 の場合はリクエストのたびにトークンを再生成します。
単体で署名Signエンコード済みトークン(header.payload.signature)を 1 つの文字列として構築・署名・返却します。HTTP や WebSocket クライアントは不要です。
クライアントにアタッチStartClient.Authentication.Token.JWTStart が設定済みの JWT に署名し、ホストコンポーネントに Bearer トークンとして渡します。Authentication.Token.JWT に一度設定すれば、以降のすべてのリクエストが署名済みで送信されます。
対応コンポーネントTsgcWebSocketClientTsgcHTTP1ClientTsgcHTTP2Clientいずれも Authentication.Token を通じて、TsgcHTTP_JWT_Client を Bearer トークン供給源として受け付けます。
OpenSSL 設定JWTOptions.OpenSSL_OptionsRS および ES アルゴリズムが使用する API バージョンとライブラリパスです(APIVersionLibPathLibPathCustomUnixSymLinks)。

パスワードレスサインイン、もう 1 つのピースを添えて

WebAuthn は sgcAuth の重要な一部ですが、このパックに登録される 3 つ目のコンポーネントではありません。sgcWebSockets の WebAuthn サーバーが提供し、その土台に sgcCustomIndy を必要とします。

項目内容
概要W3C Web Authentication Level 2(WebAuthn): TsgcWSAPIServer_WebAuthn に支えられた、パスキーと FIDO2 セキュリティキーによるパスワードレスサインインです。
実装場所TsgcWSAPIServer_WebAuthn は sgcWebSockets Enterprise と All-Access の一部であるサーバーサイドコンポーネントで、このパックが登録するクライアントではありません。
必要なものsgcCustomIndysgcWebSockets Core 向けのアドオンとして提供する、パッチ済み Indy ビルドです。
追加のされ方sgcAuth を注文すると、注文ページが sgcCustomIndy を自動的にカートへ追加します。すでにライセンスをお持ちですか? チェックアウト時に項目を削除してください。どちらの場合も追加料金は発生しません。
クライアント側ブラウザ側の JavaScript アプリケーションが WebAuthn の一連の処理を進めます。sgcHTML は、サーバーと組み合わせて使える WebAuthn ログイン UI コンポーネントを既製で提供します。

RFC、コンパイラ、ターゲット

標準化された仕様と、対応するすべてのコンパイラで共通のソースです。

項目内容
OAuth2 標準OAuth 2.0(RFC 6749)、PKCE(RFC 7636)、Device Authorization Grant(RFC 8628)、Token Revocation(RFC 7009)、Token Introspection(RFC 7662)、DPoP(RFC 9449)。
JWT 標準JSON Web Token(RFC 7519)、JSON Web Signature(RFC 7515)、JSON Web Encryption(RFC 7516)。
WebAuthn 標準Web Authentication Level 2(W3C)。sgcWebSockets の WebAuthn サーバー経由です。
プラットフォーム両クライアントとも純粋な HTTPS とローカル署名のため、Delphi の対応プラットフォームすべてをカバーします: Windows Win32/Win64、Linux 64 ビット、macOS、iOS、Android。
コンパイラDelphi および C++ Builder 7 から 13 まで。
エディションOAuth2 クライアントと JWT クライアントは sgcWebSockets の Standard エディション以上にも含まれており、All-Access にはすべてが含まれます。
ライセンス単体で完結します。sgcWebSockets Core ランタイムを同梱し、完全なソースコードが含まれます。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

sgcAuth で開発する

無料体験版をダウンロードして、Delphi や C++ Builder から最初のアクセストークンや署名済み JWT を取得しましょう。