クライアント ID 適用

ポリシー名

クライアント ID 適用

概要

承認されたクライアントアプリケーションへのアクセスのみを許可する

カテゴリ

セキュリティ

最小 Mule バージョン

3.8.0

返される状況コード

401 - 未承認または無効なクライアントアプリケーションのログイン情報

500 - 認証サーバからの不正な応答または WSDL SOAP 障害エラー

クライアント ID 適用ポリシーは、すでに​対象 API に対する登録 (コントラクト)​が行われているクライアントアプリケーションのログイン情報が各要求で提供されている場合にのみ HTTP 要求を許可することで、保護されるリソースへのアクセスを制限します。

ポリシーは、Anypoint Platform 組織内で作成されたクライアントアプリケーションのクライアント ID と必要に応じてクライアントシークレットを検証します。

Anypoint Platform のコンテキスト外で生成されたクライアントアプリケーションのログイン情報は、このポリシーで正常に検証されません。
クライアント ID とクライアントシークレットのセットは、ログイン情報とも呼ばれます。

Analytics とアクセスの追跡

API へのクライアントアプリケーションアクセスを追跡する必要がある場合、クライアント ID が HTTP 要求で提供されていることを直接的または間接的に確認するポリシー (クライアント ID 適用ポリシーなど) を適用します。

間接的なクライアント ID 適用

クライアントアプリケーションのログイン情報を適用するポリシーは他にも用意されています。次に例を示します。

Mule 3.8.5 以降では、次の OAuth 2.0 トークン適用ポリシーにクライアント ID 適用検証が含まれています。

オフラインモード

保護される API に登録されているクライアントアプリケーションのログイン情報のデータは、Anypoint Platform によって提供されます。そのような情報が必要なポリシー (クライアント ID 適用ポリシーなど) が適用されると、Runtime は情報を永続的にキャッシュして、定期的にローカルで更新します。

このアクションにより、パフォーマンスの利点を得られるだけでなく、プラットフォームへの接続が突然に失われた場合でもポリシーがオフラインで動作できます。管理プレーンの状態に関係なく、既存のデータを使用して適用されます。接続が再確立されると、再びキャッシュが定期的に更新されます。

REST コンソール

REST コンソールを使用しているときにユーザ要求が拒否されないようにするには、RAML ルートに trait を作成し、ポリシーの影響を受ける API の各操作でそれを参照します。API Manager の API 仕様の [Policies (ポリシー)] タブの適用されるポリシーのリストから、対応するポリシーの RAML に追加する必要がある RAML コードが含まれる RAML スニペットリンクを見つけることができます。

raml snippet

ログイン情報の取得源

DataWeave 2.0 式を使用すると、さまざまな方法で HTTP 要求からクライアント ID とクライアントシークレットを抽出するようにポリシーを設定できます。

次の例では、アプリケーションのログイン情報のクライアント ID の値が「1234」、クライアントシークレットの値が「abcd」であることを想定しています。

ポリシーの設定時にクライアントシークレットの DataWeave 2.0 式が明示的に指定されていない場合 (空白の項目など)、保護されるリソースに対する HTTP 要求で指定されたクライアント ID のみが検証されます。

HTTP ヘッダーとしてのログイン情報

curl を使用する要求の例:

curl "http://localhost/myResource" -H "client_id:1234" -H "client_secret:abcd"

ポリシーの設定時に使用される DataWeave 2.0 式の例:

#[attributes.headers.['client_id']]
#[attributes.headers.['client_secret']]

HTTP クエリパラメータとしてのログイン情報

curl を使用する要求の例:

curl "http://localhost/myResource?client_id=1234&client_secret=abcd"

ポリシーの設定時に使用される DataWeave 2.0 式の例:

#[attributes.queryParams.'client_id']
#[attributes.queryParams.'client_secret']

HTTP 要求ペイロードに含まれるログイン情報

curl を使用する要求の例:

curl "http://localhost/myResource" -d '{"client_id":"1234", "client_secret":"abcd"}' -X POST

ポリシーの設定時に使用される DataWeave 2.0 式の例:

#[payload.client_id]
#[payload.client_secret]

基本認証ヘッダーとしてのログイン情報

curl を使用する要求の例:

curl "http://localhost/myResource" -u 1234:abcd

ポリシーの設定時に使用される DataWeave 2.0 式の例:

ログイン情報のオリジンとして基本認証を使用するようにポリシーを設定する場合、DataWeave 2.0 式を指定する必要はありません。

WWW Authenticate HTTP ヘッダー

クライアント ID 適用ポリシーが適用されていて、クライアントアプリケーションのログイン情報が無効または未承認の場合、保護されるリソースに対して HTTP 要求が実行されると、HTTP 応答に HTTP Authenticate ヘッダーと次の値が含まれます。

カスタムモード

ヘッダー 'WWW-Authenticate'='Client-ID-Enforcement'

基本認証モード

ヘッダー 'WWW-Authenticate'='Basic realm="mule-realm"

Was this article helpful?

💙 Thanks for your feedback!