Flex Gateway新着情報
Governance新着情報
Monitoring API Managerポリシー名  | 
クライアント ID 適用  | 
概要  | 
承認されたクライアントアプリケーションへのアクセスのみを許可する  | 
カテゴリ  | 
コンプライアンス  | 
使用可能な最小 Flex Gateway バージョン  | 
v1.0.0  | 
返される状況コード  | 
401 - 未承認または無効なクライアントアプリケーションのログイン情報  | 
500 - 認証サーバーからの不正応答、または WSDL SOAP 失敗エラー  | 
クライアント ID 適用ポリシーは、登録済みクライアントアプリケーションからの要求のみを許可することで、保護されたリソースへのアクセスを制限します。このポリシーは、各要求で送信されるクライアントのログイン情報が API のコンシュームを承認されていることを確認します。
クライアントアプリケーションが Anypoint Platform に登録されると、クライアント ID とクライアントシークレットで構成されるログイン情報のペアが生成されます。クライアントアプリケーションが API へのアクセスを要求したときに、アプリケーションとその API 間のコントラクトが作成されます。クライアント ID 適用ポリシーで保護されている API は、承認されたコントラクトを持つアプリケーションのみからアクセスできます。
クライアント ID 適用ポリシーを適用すると、Analytics イベントと共にクライアント ID を報告することで、API へのアクセスが追跡されます。
クライアントアプリケーションのログイン情報を内部に適用するデフォルトポリシーは次のとおりです。
トークン適用ポリシーは、必要に応じてクライアント検証をスキップできますが、トークンが承認されたコントラクトに関連付けられていることを確認するために検証を実施することをお勧めします。
UI からポリシーを API インスタンスに適用するときに、以下のパラメーターが表示されます。
| パラメーター | 説明 | 必須 | 
|---|---|---|
Credentials origin (ログイン情報の取得元)  | 
要求のどこから値を抽出するかを指定します。 
  | 
いずれかのオプションを選択する必要があります。  | 
Client ID Expression (クライアント ID 式)  | 
API 要求からクライアント ID を取得するために使用する DataWeave 2.0 式。  | 
はい。  | 
Client Secret Expression (クライアントシークレット式)  | 
API 要求からクライアントシークレットを取得するために使用する DataWeave 2.0 式。  | 
いいえ。  | 
クライアントアプリケーションがクライアント 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"
ポリシーの設定時に使用される DataWeave 2.0 式の例:
#[attributes.queryParams.'client_id']
#[attributes.queryParams.'client_secret']
この例では、リクエスターは指定された 2 つのクエリパラメーターを要求と共に送信する必要があります。これはサポートされている設定ですが、セキュリティリスクが発生する可能性があります。ヘッダーを使用する方法をお勧めします。DataWeave 2.0 の一部がサポートされています。
クライアント ID 適用ポリシーでは、ログイン情報の要件を実装するために API 仕様を変更する必要があります。 対応するポリシーの API 仕様に追加する必要がある RAML または OAS コードが含まれる、RAML または OAS スニペットリンクがあります。このコードには、API Manager で API 仕様の [Policies (ポリシー)] タブにある適用済みポリシーのリストからアクセスできます。