Flex Gateway新着情報
Governance新着情報
Monitoring API Managerポリシー名 |
クライアント ID 適用 |
概要 |
承認されたクライアントアプリケーションへのアクセスのみを許可する |
カテゴリ |
コンプライアンス |
使用可能な最小 Mule バージョン |
v3.8.0 |
返される状況コード |
401 - 未承認または無効なクライアントアプリケーションのログイン情報 |
500 - 認証サーバーからの不正応答、または WSDL SOAP 失敗エラー |
クライアント ID 適用ポリシーは、登録済みクライアントアプリケーションからの要求のみを許可することで、保護されたリソースへのアクセスを制限します。このポリシーは、各要求で送信されるクライアントのログイン情報が API のコンシュームを承認されていることを確認します。
クライアントアプリケーションが Anypoint Platform に登録されると、クライアント ID とクライアントシークレットで構成されるログイン情報のペアが生成されます。クライアントアプリケーションが API へのアクセスを要求したときに、アプリケーションとその API 間のコントラクトが作成されます。クライアント ID 適用ポリシーで保護されている API は、承認されたコントラクトを持つアプリケーションのみからアクセスできます。
クライアント ID 適用ポリシーを適用すると、Analytics イベントと共にクライアント ID を報告することで、API へのアクセスが追跡されます。ポリシー、コントラクト、および初期化データに関連するすべての機密情報を暗号化するように、Mule Runtime Engine (Mule) を設定できます。
クライアントアプリケーションのログイン情報を内部に適用するデフォルトポリシーは次のとおりです。
トークン適用ポリシーは、必要に応じてクライアント検証をスキップできますが、トークンが承認されたコントラクトに関連付けられていることを確認するために検証を実施することをお勧めします。
UI からポリシーを API に適用するときに、環境に Mule アプリケーションがあるか非 Mule アプリケーションがあるかに基づいて、パラメーターのリストが表示されます。
Mule アプリケーションの場合、次のパラメーターが表示されます。
パラメーター | 説明 | 必須 |
---|---|---|
Credentials origin (ログイン情報の取得元) |
要求のどこから値を抽出するかを指定します。
|
いずれかのオプションを選択する必要があります。 |
Client ID Expression (クライアント ID 式) |
API 要求からクライアント ID を取得するために使用する DataWeave 2.0 式。 |
はい。 |
Client Secret Expression (クライアントシークレット式) |
API 要求からクライアントシークレットを取得するために使用する DataWeave 2.0 式。 |
いいえ。 |
Method & Resource conditions (メソッドとリソースの条件): Apply configurations to all API methods & resources (設定をすべての API メソッドおよびリソースに適用) |
API に関連付けられたすべてのメソッドとリソースにポリシーを適用する必要がある場合、このオプションを選択します。 |
いずれかのオプションを選択する必要があります。 |
Method & Resource conditions (メソッドとリソースの条件): Apply Configurations to Specific Methods & Resources (特定のメソッドとリソースに設定を適用) |
API に関連付けられた特定のメソッドとリソースにポリシーを適用する必要がある場合、このオプションを選択します。 |
いずれかのオプションを選択する必要があります。 |
Anypoint Service Mesh (非 Mule アプリケーション) の場合、クライアント ID 適用ポリシーを同じ方法で設定しますが、次の違いがあります。
要素 | 説明 | 必須 |
---|---|---|
Credentials origin (ログイン情報の取得元) |
要求のどこから値を抽出するかを指定します。
|
いずれかのオプションを選択する必要があります。 |
Client ID Header (クライアント ID ヘッダー) |
API 要求からクライアント ID を抽出するために使用されるヘッダー名。 |
はい。 |
Client Secret Header (クライアントシークレットヘッダー) |
API 要求からクライアントシークレットを抽出するために使用されるヘッダー名。 |
いいえ。 |
クライアントアプリケーションがクライアント ID 適用ポリシーで保護された API をコンシュームできるようになる前に、クライアントアプリケーションは API へのアクセスを要求する必要があります。クライアントアプリケーションと API 間に承認されたコントラクトが存在する場合、ポリシーの設定方法に準拠したクライアントアプリケーションのログイン情報がすべての要求に含まれている必要があります。
たとえば、クエリパラメーターとしてクライアント ID とクライアントシークレットを必要とするポリシーが設定されている場合、アプリケーションは要求でそれらのログイン情報を送信する必要があります。これを適用するには、API 仕様に client-id-required
RAML trait を追加します。
traits: client-id-required: queryParameters: client_id: type: string client_secret: type: string
is
RAML 属性を使用して、trait をリソースまたはメソッドに適用します。
/example: get: is: [client-id-required] description: Example description
さまざまなカスタム DataWeave 2.0 式を使用して、HTTP 要求からクライアント ID とクライアントシークレットの両方、またはクライアント ID のみを抽出するようにポリシーを設定できます。次の例では、「1234」のクライアント ID と「abcd」のクライアントシークレットを使用しています。
curl を使用する要求の例:
curl "http://localhost/myResource" -H "client_id:1234" -H "client_secret:abcd"
ポリシーの設定時に使用される DataWeave 2.0 式の例:
#[attributes.headers['client_id']]
#[attributes.headers['client_secret']]
この例では、client_id と client_secret の 2 つのヘッダー、およびログイン情報のペアを必要とするポリシーが設定されています。このポリシーは、他の種別のヘッダーも許可する柔軟性があります。これがポリシーのデフォルト設定です。
curl を使用する要求の例:
curl "http://localhost/myResource?client_id=1234&client_secret=abcd"
Mule 4 のポリシーの設定時に使用される DataWeave 2.0 式の例:
#[attributes.queryParams.'client_id']
#[attributes.queryParams.'client_secret']
この例では、リクエスターは指定された 2 つのクエリパラメーターを要求と共に送信する必要があります。これはサポートされている設定ですが、セキュリティリスクが発生する可能性があります。ヘッダーを使用する方法をお勧めします。DataWeave 2.0 は Mule 4 では完全にサポートされ、Flex では一部サポートされます。
Mule 3 のヘッダー付きポリシーの設定時に使用される MEL 式の例:
#[message.inboundProperties['client_id']]
#[message.inboundProperties['client_secret']]
クライアント ID 適用ポリシーでは、ログイン情報の要件を実装するために API 仕様を変更する必要があります。 対応するポリシーの API 仕様に追加する必要がある RAML または OAS コードが含まれる、RAML または OAS スニペットリンクがあります。このコードには、API Manager で API 仕様の [Policies (ポリシー)] タブにある適用済みポリシーのリストからアクセスできます。