TsgcHTTP_OAuth2_Client

クライアントが新しいアクセストークンを必要とするとき、自動的に HTTP サーバーを起動して認可サーバーからのレスポンスを処理します。

はじめに

このコンポーネントにより、クライアントと他のロール間のフローを処理できます。基本的に Active := True を設定すると新しい Web ブラウザーが開き、ユーザーへの認可付与をリクエストします。成功した場合、認可サーバーはアプリケーションにトークンを送信し、このトークンが処理されてクライアントはリソースサーバーに接続できます。このコンポーネントは認可サーバーの応答を処理するシンプルな HTTP サーバーを起動し、アクセストークンをリクエストするための HTTP クライアントを使用します。

 

GrantType

 

クライアントは以下の種類の認証をサポートします:

 

auth2Code: シングルページアプリケーション、ウェブアプリケーション、ネイティブインストールアプリケーションを含む大多数のアプリケーションタイプで認証と認可を行うために使用されます。このフローにより、アプリはリソースへのアクセスに使用できる access_token、追加の access_token を取得するためのリフレッシュトークン、およびサインインユーザーの ID トークンを安全に取得できます。

 

 

auth2CodePKCE: PKCE が有効になっている点を除いて auth2Code と同じ認証フローです。PKCE(Proof Key for Code Exchange)は OAuth 2.0 のセキュリティ拡張で、ネイティブおよびシングルページアプリケーションの認可フローのセキュリティを強化するために設計されています。特に認可コードが転送中に傍受される可能性があるパブリッククライアントにおいて、傍受攻撃のリスクを軽減します。通常、このオプションはネイティブアプリとモバイルアプリで使用されます。

 

auth2ClientCredentials: このタイプのグラントは、ユーザーとの即時のやり取りなしにバックグラウンドで実行する必要があるサーバー間のやり取りで一般的に使用されます。このようなアプリケーションは、しばしばデーモンまたはサービスアカウントと呼ばれます。

 

 

auth2DeviceCode: ブラウザが使用できない、または入力機能が制限されているスマートテレビ、メディアコンソール、IoT デバイスなどの入力制限デバイス用デバイス認可グラント (RFC 8628)。デバイスにユーザーコードと確認 URI が表示され、ユーザーはセカンダリデバイス (スマートフォンまたはコンピューター) でその URI にアクセスしてコードを入力して認可します。

 

LocalServerOptions

 

クライアントが新しいアクセストークンを必要とする場合、認可サーバーからのレスポンスを処理するために自動的に HTTP サーバーを起動します。このサーバーはユーザーには透過的で、通常は localhost で動作します。デフォルトではポート 8080 を使用しますが、必要に応じて変更できます。

 

 

AuthorizationServerOptions

 

ここでは認可とアクセストークンの URL を設定する必要があります。通常これらは API 仕様で提供されます。Scope はクライアントがリクエストするすべてのスコープのリストです。例:

 

 

OAuth2Options

 

ClientId はサーバーにクライアントの識別情報を知らせる必須フィールドです。ClientId の取得方法については API 仕様を確認してください。クライアントシークレットについても同様です。

サーバーが Basic Authentication を使用したユーザーとパスワードの要求をする場合、Username/Password フィールドで設定できます。例:

 

 

HTTPClientOptions

 

ここでは HTTP サーバーに接続して新しいトークンをリクエストする際のクライアントオプションを設定できます。

 

TLSOptions: TLS が有効な場合、ここでいくつかの TLS プロパティをカスタマイズできます。

 

ALPNProtocols: サーバーに送信される ALPN プロトコルのリスト。

RootCertFile: ルート証明書ファイルへのパス。

CertFile: 証明書ファイルへのパス。

KeyFile: 証明書鍵ファイルへのパス。

Password:証明書がパスワードで保護されている場合は、ここに設定します。

VerifyCertificate: 証明書を検証する必要がある場合は、このプロパティを有効にしてください。

VerifyDepth: X.509 証明書の検証実行時に許可されるリンクの最大数を表す整数プロパティ。

Version: デフォルトでは TLS 1.0 を使用します。サーバーがより高い TLS バージョンを要求する場合、ここで選択できます。

IOHandler: TLS を使用した接続に使用するライブラリを選択します。

iohOpenSSL: OpenSSLライブラリを使用し、Indyコンポーネントのデフォルトです。win32/win64用のopensslライブラリをデプロイする必要があります。

iohSChannel: Microsoft が Windows 用に実装したセキュリティプロトコルである Secure Channel を使用します。OpenSSL ライブラリをデプロイする必要がありません。Windows 32/64 ビットでのみ動作します。

OpenSSL_Options: 使用するOpenSSL APIを定義できます。

APIVersion: 使用する OpenSSL API を定義できます。

oslAPI_1_0: API 1.0 OpenSSL を使用します。Indy で最後にサポートされたバージョンです。

oslAPI_1_1: API 1.1のOpenSSLを使用します。カスタムIndyライブラリが必要で、OpenSSL 1.1.1ライブラリ(TLS 1.3サポート付き)の使用が可能になります。

oslAPI_3_0: API 3.0 OpenSSLを使用します。当社のカスタムIndyライブラリが必要であり、OpenSSL 3.0.0ライブラリの使用を可能にします(TLS 1.3サポート付き)。

LibPath: openSSLライブラリの場所を設定できます

oslpNone: これはデフォルトです。openSSLライブラリは、バイナリと同じフォルダー、または既知のパスに ある必要があります。

oslpDefaultFolder: すべてのIDEパーソナリティに対してライブラリが配置されるべきopenSSLパスを自動的に設定します。

oslpCustomFolder: このオプションが選択されている場合、プロパティ LibPathCustom にフルパスを定義します。

LibPathCustom: LibPath = oslpCustomFolder の場合、openSSL ライブラリが格納されているフォルダーの完全パスをここで定義します。

UnixSymLinks: Unix システムでシンボリックリンクの読み込みを有効または無効にします(デフォルトでは有効です。OSX64 は除きます)。

oslsSymLinksDefault: デフォルトでは有効です。ただし OSX64 では無効です(MacOS Monterey 以降、バージョンなしでライブラリを読み込もうとすると失敗するため)。

oslsSymLinksLoadFirst: SymLinksを読み込み、バージョンライブラリを読み込む前に行います。

oslsSymLinksLoad: バージョンライブラリの読み込みを試みた後にシンボリックリンクを読み込みます。

oslsSymLinksDontLoad: SymLinksを読み込みません。

SChannel_Options: Windows 証明書ストアから証明書を使用できます。

CertHash: 証明書のハッシュ値です。PowerShell で dir コマンドを実行することで証明書のハッシュ値を確認できます。

CertStoreName: 証明書が保存されているストアの名前。以下のいずれかを選択します:

scsnMY(デフォルト)

scsnCA

scsnRoot

scsnTrust

CertStorePath: 証明書が格納されているストアパス。以下から選択してください:

scspStoreCurrentUser(デフォルト)

scspStoreLocalMachine

 

LogOptions: ファイル名が設定されている場合、HTTP クライアントの HTTP リクエスト/レスポンスのログを保存します。

 

リファレンス