サード・パーティー OAuth プロバイダーの OAuth イントロスペクション
OAuth トークンの検証は、イントロスペクション URL を使用することにより、サード・パーティーの Open Authorization (OAuth)/Open ID Connect (OIDC) プロバイダーにオフロードすることができます。 クライアントは、サードパーティのOAuthまたはOIDCプロバイダを使って、API Connectで保護されたトークンを取得することができます。 IBM® API Connectは、APIへのアクセスを保護するために、前述のプロバイダとともにこの機能を使うことができます。
API Connect を使用すると、 RFC 7662に定義されているイントロスペクション仕様に従って、サード・パーティー OAuth アクセス・トークンを使用して保護されている API を保護できます。 この仕様に加えて、必要に応じてその他のコンテンツをサード・パーティーに渡すための x-Introspect- ヘッダーも用意されています。
基本認証要求ヘッダーを構成することで、認証情報を要求に組み込むことができます。
以下のシーケンス図は、要求と応答のフロー全体を説明しています。 この図はフローの特性の概略を可視化することのみを目的としているため、正確な詳細については図の後の説明を参照してください。

イントロスペクト URL は、サード・パーティー OAuth プロバイダー構成で設定されます。 サード・パーティー OAuth プロバイダーの構成を参照してください。
API がサードパーティの OAuth プロバイダによって保護されている場合、 API Connect はベアラートークンを抽出し、 Introspect URL フィールドで指定されたエンドポイントに HTTP POST リクエストを発行します。
GET 要求は、この機能を使用して API Connect によって保護されます。
x-introspect-*などの追加情報を送信するために使用するヘッダーの名前パターンを指定します。 GET /petstore/pet/123 HTTP/1.1
Host: apiconnect.com
x-Introspect-type: dog
x-Introspect-name: simon
x-custom-apic: petstore123
Authorization: Bearer tGzv3JOkF0XG5Qx2TlKWIA
x-IBM-Client-Id: xxx-xxxただし、別のヘッダー接頭部を使用する場合は、サード・パーティー OAuth プロバイダー構成の「カスタム・ヘッダーのパターン」フィールドに、必要な値を指定します。 サード・パーティー OAuth プロバイダーの構成について詳しくは、 サード・パーティー OAuth プロバイダーの構成を参照してください。 「カスタム・ヘッダー・パターン」 機能は、 DataPower® API Gatewayでのみ使用可能です。 DataPower Gateway (v5 compatible) を使用している場合、ヘッダー接頭部は x-Introspect-でなければなりません。
x-tokenIntrospect POST /oauth/introspectURL HTTP/1.1
Host: apiconnect.ibm.com
Content-Type: application/x-www-form-urlencoded
x-Introspect-type: dog
x-Introspect-name: simon
x-custom-apic: petstore123
token_type_hint=access_token&token=tGzv3JOkF0XG5Qx2TlKWIA
サードパーティのOAuth/OIDCプロバイダは、次のように応答しますHTTP 200要求が成功したこと、およびペイロードにトークン情報が含まれていることを示します。 API Connect は、RFC 仕様に定義されているアクティブ・クレームを受け入れます。
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{ “active”:true,
“token_type”:“bearer”,
“client_id”:“xxx-xxx”,
“username”:“John Smith”,
...
} HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"active":false
}HTTP 200 以外の応答コードは、要求の処理が失敗したことを示します。
OAuth トークンが有効かつアクティブである場合、コンテキスト変数がイントロスペクト JSON 応答からの情報を使用して設定されます。 詳しくは、 API Connect コンテキスト変数を参照してください。
イントロスペクションエンドポイントに接続する際、 API Connect は client_id/appId および client_secret/appSecret を使用して、 HTTP 基本認証ヘッダーを構築します。
x-introspect-basic-authorization-header が存在する場合、その値はイントロスペクション・エンドポイントとの通信が行われる際に HTTP 基本認証ヘッダーに対して使用されます。 API Connect HTTP 基本認証ヘッダー値が送信前に エンコードされていることを確認し、必要に応じて次の例のようにエンコードします。 Base64 ヘッダーが既にエンコードされている場合は、そのまま送信されます。GET /petstore/pet/123 HTTP/1.1
Host: apiconnect.com
x-introspect-basic-authorization-header: user:passwordAPI Connect は以下を発行します。POST ..
Authorization: Basic M3JkLXBhcnR5LWNsaWVudF9pZDozcmQtcGFydHlfY2xpZW50X3NlY3JldA==token_type_hint=access_token&token= ..scope validate url のどちらか、あるいは両方が設定されていて、レスポンスがサードパーティのOAuth Provider introspectionエンドポイントからのscope claimを持つアクティブトークンである場合、 API Connect 、さらに以下の順序でscopeバリデーションが実施される:- OAuth API 保護に対して
scopeが構成されている場合、サード・パーティーのスコープを、構成済みの当該のスコープに対して検証します。 scope validation urlが構成されている場合、サード・パーティーのスコープを、スコープ検証 URL に対して検証します。- サードパーティー OAuth プロバイダーのイントロスペクション・エンドポイントがスコープを返さない場合、ゲートウェイは、サードパーティー OAuth プロバイダー・リソースが使用されている API のセキュリティー定義で定義されているスコープを検査しません。 API での OAuth セキュリティー定義の構成について詳しくは、 OAuth セキュリティー定義の作成を参照してください。
- 以下のように
suppress-parametersヘッダーを指定します。suppress-parameters: client_id
またはsuppress-parameters: scope
のいずれかの suppress-parameters ヘッダーを指定します。suppress-parameters: client_id scope - API 定義自体に
suppress-parametersという名前の API プロパティーを定義し、抑止したいパラメーターに応じてclient_id
またはscope
のいずれかの suppress-parameters ヘッダーを指定します。 API プロパティーの定義方法については、 API プロパティーの設定を参照してください。client_id scope