---
schema_version: "1"
id: 90dded2faf2981314fdea66262b5597e0c84a9a34f59710544b86943c8cda03c
title: 外部認証ポリシー
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/gateway/1.10/policies-included-external-authorization.md
canonical_url: https://docs.mulesoft.com/jp/gateway/1.10/policies-included-external-authorization
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 00719e553af3b4a9517d5dc82841a2a6be38ce6be2b3ae2fcac024f1fb302e95
description: MuleSoft Documentation Site
release: "1.10"
latest: false
---
# 外部認証ポリシー

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>ポリシー名</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">外部認証</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>Summary (概要)</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">外部 gRPC または HTTP 認証サービスを使用して要求を認証します</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>カテゴリ</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">セキュリティ</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>使用可能な最小 Flex Gateway バージョン</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v1.6.0</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>返される状況コード</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">403 - アクセス拒否、無効なクライアントアプリケーションログイン情報</p></td>
</tr>
</tbody>
</table>

## [](#概要)概要

外部認証ポリシーでは、受信クライアント HTTP 要求を外部 gRPC または HTTP 認証サービスに転送してクライアント HTTP 要求がアップストリームサービスへのアクセスを承認されるかどうかを判断します。要求が承認されると、Flex Gateway では要求がアップストリームサービスに渡されることを許可します。不正なアクセスでは、Flex Gateway では ​`403`​ 禁止要求エラーを返します。

認証トークンヘッダーなどのリクエストヘッダーをクライアント HTTP 要求から認証サービスに転送するには、​**\[Allowed Headers (許可されるヘッダー)\]**​ パラメーターを設定します。さらに、HTTP 認証サーバーの場合は、​**\[Headers to add (追加するヘッダー)\]**​ パラメーターを使用して新しいヘッダーを認証要求に挿入します。

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
<div class="paragraph">
<p>Flex Gateway によってヘッダーがバイト単位でエンコードされ、認証サービスに送信されます。utf8 でエンコードされたヘッダーを送信するには、環境変数 ​<code>FLEX_HEADER_RAW_VALUE_ENABLE=false</code>​ を設定します。</p>
</div>
</td>
</tr>
</tbody></table>

外部認証ポリシーでは、認証サービスから返された追加情報を使用してクライアント HTTP リクエストおよびレスポンスヘッダーを変更することもできます。たとえば、承認済みのユーザーがユーザー名に対応するアクセストークンヘッダーを使用して要求を行うと、認証サービスでは Flex Gateway がクライアント HTTP 要求を追加できるように ​`username`​ ヘッダーを返す場合があります。

gRPC 認証サーバーの場合は、認証サービスが認証応答を含めてヘッダーを返す場合、Flex Gateway ではこれらのヘッダーをクライアント HTTP 要求に追加するか、クライアント要求に存在する場合はヘッダーを上書きします。

HTTP 認証サーバーの場合は、追加、上書き、または無視するヘッダーを設定できます。HTTP サーバーが設定されているポリシーでも、アップストリームサービスから返されるクライアント応答を変更できます。

外部認証ポリシーは、Envoy に対してネイティブな外部認証検索条件の拡張機能です。外部認証検索条件に付いての詳細は、 [「External Authorization Filter (外部認証検索条件)」](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/ext_authz_filter)​を参照してください。すべての外部認証検索条件パラメーターが外部認証ポリシーで使用できるとは限りません。設定可能なパラメーターを確認するには、​[「ポリシーのパラメーターの設定」](#configuring-policy-parameters)​を参照してください。

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">他のポリシーで受信 HTTP 要求が変更される場合は、要求を認証サービスに送信する前にこれらの変更が存在している必要があるかどうかに応じて確実にポリシーを並び替えてください。ポリシーの並び替えについての詳細は、<a href="https://docs.mulesoft.com/jp/gateway/1.10/policies-reorder" class="xref page">ポリシーの順序付け</a>を参照してください。</td></tr></tbody></table>

## [](#ポリシーのパラメーターの設定)ポリシーのパラメーターの設定

ポリシーパラメーターを設定するには、Flex Gateway が実行されているモードに関する次のパラメーターリファレンスを参照してください。

- [Flex Gateway のローカルモード](#local-mode)
- [管理 Flex Gateway および Flex Gateway の接続モード](#connected-mode)

### [](#local-mode)Flex Gateway のローカルモード

ローカルモードでは、宣言型の設定ファイルを使用してポリシーを API に適用します。以下のポリシー定義とパラメーターの表を参照してください。

```yaml
- policyRef:
    name: native-ext-authz-flex
  config:
    uri: <string> // REQUIRED
    serverType: <string> // REQUIRED, default "grpc"
    serverApiVersion: <string> // REQUIRED, default `v3`
    serviceRequestHeadersToAdd: <object-array> // OPTIONAL
      - key: <string>
        value: <string>
    serviceResponseUpstreamHeaders: <string-array> // OPTIONAL
    serviceResponseUpstreamHeadersToAppend: <string-array> // OPTIONAL
    serviceResponseClientHeaders: <string-array> // OPTIONAL
    serviceResponseClientHeadersOnSuccess: <string-array> // OPTIONAL
    pathPrefix: <string> // OPTIONAL
    requestTimeout: <number> // REQUIRED, default `5000`
    includePeerCertificate: <boolean> // REQUIRED, default `false`
    allowedHeaders: <string-array> // OPTIONAL
```

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">必須または省略可能</th>
<th class="tableblock halign-left valign-top">デフォルト値</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>uri</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>必須</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>外部認証サービス URI。gRPC 種別のサーバーでは、次の形式を使用して URI を定義します: <code>h2://&lt;ext.authz.com&gt;:&lt;port&gt;</code>​。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>serverType</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>必須</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>grpc</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>外部サーバーの種別。サポートされている値は ​<code>grpc</code>​ と ​<code>http</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>serverApiVersion</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>v3</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>トランスポートプロトコル API バージョン。サポートされている値は ​<code>v3</code>​ と ​<code>v2</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>includePeerCertificate</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>false</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>true</code>​ の場合、認証サーバー要求にピア証明書が含まれます。サポートされている値は ​<code>true</code>​ と ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>serviceRequestHeadersToAdd</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>認証サービス要求に挿入するカスタムヘッダーとその値が定義されます。このパラメーターは ​<code>HTTP</code>​ 種別のサーバーで使用できます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>serviceRequestHeadersToAdd.key</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>追加する新しいヘッダーの名前。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>serviceRequestHeadersToAdd.value</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>追加する新しいヘッダーの値。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>serviceResponseUpstreamHeaders</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アップストリームサービスへのクライアント要求に追加する認証応答からのヘッダーが指定されます。Flex Gateway によって共存するヘッダーが上書きされます。このパラメーターは ​<code>HTTP</code>​ 種別のサーバーで使用できます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>serviceResponseUpstreamHeadersToAppend</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アップストリームサービスへのクライアント要求に追加する認証応答からのヘッダーが指定されます。Flex Gateway によって共存するヘッダーが追加されます。このパラメーターは ​<code>HTTP</code>​ 種別のサーバーで使用できます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>serviceResponseClientHeaders</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アップストリームサービスから返されるクライアント応答に追加する認証応答からのヘッダーが指定されます。Flex Gateway によって既存のヘッダーが上書きされます。このパラメーターは ​<code>HTTP</code>​ 種別のサーバーで使用できます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>serviceResponseClientHeadersOnSuccess</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>要求が正常に認証された場合にアップストリームサービスから返されるクライアント応答に追加する認証応答からのヘッダーが指定されます。Flex Gateway によって既存のヘッダーが上書きされます。このパラメーターは ​<code>HTTP</code>​ 種別のサーバーで使用できます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>pathPrefix</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Path</code>​ 認証リクエストヘッダーが存在する場合はその値に対するプレフィックスを設定します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>requestTimeout</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>5000</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ポリシーが認証サービスからの応答を待機する最大時間 (ミリ秒)。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>allowedHeaders</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>認証要求に伝播するクライアント HTTP 要求からのヘッダーが指定されます。デフォルトでは、gRPC サーバーに送信される要求にはすべてのクライアントヘッダーが含まれます。HTTP サーバーに送信される要求にはクライアントヘッダーが含まれません。各サーバー種別の許可されるヘッダーをリストする場合は、要求にリストされたヘッダーのみが含まれます。</p>
</div></div></td>
</tr>
</tbody>
</table>

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">必須の値を空白のままにすると、パラメーターがデフォルト値として設定されます。省略可能な値を空白のままにした場合は、値が設定されません。</td></tr></tbody></table>

### [](#リソースの設定例)リソースの設定例

次の設定では、gRPC 認証サービスがピア証明書と認証トークンヘッダーが含まれる要求を受信します。

```yaml
- policyRef:
    name: native-ext-authz-flex
  config:
    uri: h2://ext-authz-grpc-service:9001
    serverType: "grpc"
    includePeerCertificate: "true"
    allowedHeaders:
      - access-token
```

### [](#connected-mode)管理 Flex Gateway および Flex Gateway の接続モード

UI からポリシーを API インスタンスに適用するときに、以下のパラメーターが表示されます。

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top"><strong>パラメーター</strong></th>
<th class="tableblock halign-left valign-top"><strong>説明</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>External authorization service URI (外部認証サービス URI)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>外部認証サービス URI。gRPC 種別のサーバーでは、​<code>\h2://&lt;ext.authz.com&gt;:&lt;port&gt;</code>​ として URI を定義します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>External authorization server type (外部認証サーバー種別)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>外部サーバーの種別。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Server API version (サーバー API バージョン)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>トランスポートプロトコル API バージョン。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Include peer certificates in the authorization server request (認証サーバー要求にピア証明書が含まれる)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>認証サーバー要求にピア証明書が含まれます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Path prefix (パスプレフィックス)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Path</code>​ 認証リクエストヘッダーが存在する場合はその値に対するプレフィックスを設定します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Request Timeout (要求タイムアウト)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ポリシーが認証サービスからの応答を待機する最大時間 (ミリ秒)。デフォルトでは、要求タイムアウトは 5000 ミリ秒です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Allowed headers (許可されるヘッダー)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>デフォルトでは、gRPC サーバーに送信される要求にはすべてのクライアントヘッダーが含まれ、HTTP サーバーに送信される要求にはクライアントヘッダーが含まれません。各サーバー種別の許可されるヘッダーをリストする場合は、要求にリストされたヘッダーのみが含まれます。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#ポリシーのしくみ)ポリシーのしくみ

次の図は、外部認証ポリシー実行時の要求と応答のフローの順序を示しています。

![ユーザー、API ゲートウェイ、データベース、API 間のインタラクションを示すシーケンス図](/mulesoft/current/ja-jp/gateway/1.10/_images/ext-auth-policy.png)

1. クライアントが Flex Gateway によって公開される API インスタンスに対する HTTP 要求を行います。
2. Flex Gateway がクライアントの要求とヘッダーで構成される要求を認証サービスに転送します。
3. 認証サービスが認証応答を Flex Gateway に送信し返します。
    
    - 要求が認証されない場合、Flex Gateway では必要なヘッダーを追加し、​`403`​ 禁止アクセスコードをクライアントに返します。
    - 要求が承認されると、Flex Gateway では必要に応じてヘッダーデータをクライアント要求に追加して、要求がアップストリームサービスに渡されることを許可します。
4. Flex Gateway は必要なヘッダーを追加し、通常どおりに応答を返します。