---
schema_version: "1"
id: da963f9f4ebede2d070d7d96227d51b107ee56cd5c60b608982ae45875a5e038
title: Mule OAuth プロバイダーを使用する OAuth 2.0 アクセストークン適用ポリシー
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-gateway/policies-included-oauth-access-token-enforcement.md
canonical_url: https://docs.mulesoft.com/jp/mule-gateway/policies-included-oauth-access-token-enforcement
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 5155210c7d1cdc0b8ce5bd5a5915e38e0f2fd53aae8eded87e5d1202b0dff32e
description: MuleSoft Documentation Site
latest: true
---
# Mule OAuth プロバイダーを使用する OAuth 2.0 アクセストークン適用ポリシー

<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">Mule OAuth プロバイダーを使用する OAuth 2.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">承認されたクライアントアプリケーションへのアクセスのみを許可する</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>使用可能な最小 Mule バージョン</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v4.1.1</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-middle" rowspan="4"><p class="tableblock"><strong>返される状況コード</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">400 - 無効なトークン</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">401 - 未承認または認証サーバーへの接続時にエラー</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">403 - アクセス拒否、無効なクライアントアプリケーションログイン情報</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">500 - 認証サーバーからの不正応答、または WSDL SOAP 失敗エラー。</p></td>
</tr>
</tbody>
</table>

## [](#概要)概要

Mule OAuth プロバイダーとのみ連携する OAuth 2.0 アクセストークン適用ポリシーは、API アクセス権のあるクライアントアプリケーションに属する有効な OAuth 2 トークンを提供する HTTP 要求のみに、保護されたリソースへのアクセスを制限します。このポリシーはトークンを生成せず、トークンを検証するだけです。

このポリシーは、​[Mule OAuth プロバイダー](https://docs.mulesoft.com/jp/api-manager/latest/mule-oauth-provider-landing-page)​でのみ使用するように設計されています。このポリシーを他の OAuth 2.0 プロバイダー (Facebook、Google、Microsoft Azure など) で使用することはできません。

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

### [](#flex-gateway-のローカルモード)Flex Gateway のローカルモード

OAuth 2.0 アクセストークン適用ポリシーは、Flex Gateway のローカルモードではサポートされません。

### [](#flex-gateway-の接続モード)Flex Gateway の接続モード

OAuth 2.0 アクセストークン適用ポリシーは、Flex Gateway の接続モードではサポートされません。

### [](#mule-ゲートウェイ)Mule ゲートウェイ

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<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>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">スコープ</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">サポートされるスコープのカンマ区切りリストを表示します。</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>READ</code>​、​<code>WRITE</code>​、​<code>READ and WRITE</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Scope Validation Criteria (スコープ検証条件)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トークンに定義済みのすべてのスコープが含まれる必要があるか、1 つのみ含まれる必要があるかを決定します。
この値は、​<code>Contains all scopes</code>​ と ​<code>Contains any scope</code>​ です。</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[Contains all scopes (すべてのスコープを含む)] 値が選択されている場合、スコープ ​<code>READ</code>​ と ​<code>WRITE</code>​ を持つトークンが受け入れられます。[Contains any scopes (いずれかのスコープを含む)] 値が選択されている場合、スコープ ​<code>READ</code>​、​<code>WRITE</code>​、​<code>READ AND WRITE</code>​ を持つトークンが受け入れられます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Access Token validation endpoint url (アクセストークン検証エンドポイント URL)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">外部 OAuth 2 プロバイダーのアクセストークン検証エンドポイントの URL。</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">クライアントによってホストされる Mule プロバイダーへのリンク: http://client-hostetd-mule-provider-url.cloudhub.io/validate。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Validate TLS Certificate (TLS 証明書の検証)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">サードパーティ認証サーバーの TLS 検証を有効にします。</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">選択した場合、トークン検証エンドポイントとの通信には TLS プロトコルが使用されます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Expose Headers (ヘッダーを公開)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">プロキシのシナリオで、バックエンドへの要求でヘッダーを公開する必要があるかどうかを指定します。統合サーバーによって返されるユーザープロパティは、「X-AGW-」というプレフィックスが付けられ、ヘッダーとしてバックエンドに送信されます。</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">この要素についての詳細は、​<a href="#leveraging-TVE-information">「Mule アプリケーションのトークン検証エンドポイント情報の活用」</a>​を参照してください。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Skip Client Id Validation (クライアント ID 検証をスキップ)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">クライアントアプリケーションの API コントラクト検証をスキップします。</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">選択した場合、​<a href="#how-this-policy-works">「ポリシーのしくみ」</a>​セクションの図のステップ 4 がスキップされます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Authentication request timeout (認証要求タイムアウト)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">アクセストークン検証エンドポイントを認証するときに、応答を待機する最大時間 (ミリ秒単位) を設定します。</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>10000</code></p></td>
</tr>
</tbody>
</table>

## [](#how-this-policy-works)ポリシーのしくみ

次の図は、Mule OAuth プロバイダーポリシーを使用する OAuth 2.0 トークン適用ワークフローを示しています。

![OAuth ポリシーを介して API とやり取りするユーザーのプロセスを示すフローチャート](/mulesoft/current/ja-jp/mule-gateway/_images/open-id-policy-workflow.png)

この図には次の動作が示されています。

1. ユーザーが最初にポリシーで保護された API に HTTP 要求を送信します。
2. ポリシーは要求からトークンを抽出し、それを検証エンドポイントに送信して、トークンの整合性を検証します。
3. トークン検証エンドポイントは、クライアントアプリケーションのクライアント ID を含むトークンメタデータを返します。
4. ポリシーは Anypoint Platform から以前に取得したコントラクトで更新されたローカルデータベースを使用して、クライアント ID が API にアクセスできるかどうかを検証します。
5. すべての検証が正常に完了すると、要求はバックエンドに到達できます。

### [](#leveraging-TVE-information)Mule アプリケーションのトークン検証エンドポイント情報の活用

トークン検証エンドポイントがトークンを正常に検証すると、Mule OAuth プロバイダーからの設定可能な項目などの特定の情報がポリシーに返されます。

次の例は、認証サーバーからのトークン検証応答を示しています:

```text
---
{
    "uid":"john.doe",
    "mail":"john.doe@example.com"
    "token_type":"Bearer",
    "expires_in":3600,
    "alias" : ["Jhon", "Jhonny", "Mr Doe"],
    "address" : {
        "city": "london",
        "road": “abbey road"
    }
```

} --- OAuth プロバイダーによって返された項目はポリシーによって処理され、Mule フロー全体に伝播され、アクセスを要求しているアプリケーションが HTTP リクエスターを使用している場合は最終的にバックエンドに公開されます。

### [](#トークンキャッシュ)トークンキャッシュ

システムがトークンを検証すると、そのトークンは (デフォルトで) 期限切れになるまでキャッシュされるため、ポリシーのパフォーマンスが向上します。失効したトークンなどの特定のケースでは、キャッシュを最小限に抑えたり無効にしたりできます。

検証エンドポイントは、トークンの有効期限などの複数のプロパティをポリシーに送信します。有効期限情報がない場合、トークンはキャッシュされません。

トークンのキャッシュにかかる時間を制御するには、トークン検証エンドポイントに対して再検証を試みる前に、Mule Runtime Engine を起動するときに次のプロパティを指定します。

`anypoint.platform.max_federation_expiration_time=<expiration time in seconds>`

または、​`wrapper.conf`​ ファイルでこのパラメーターを指定できます。このプロパティを設定すると、指定された時間、またはトークンが期限切れになるまでのいずれか早い方でトークンがキャッシュされます。このプロパティが有効で、検証エンドポイントが有効期限情報を送信しない場合、トークンはキャッシュされません。

同時にキャッシュできるトークンの数を制御するには、Mule Runtime Engine を起動するときに次のプロパティを指定します。

`anypoint.platform.oauth2_cache_max_size=<amount of tokens to be cached; default value is 10.000; specify 0 to disable caching>`

または、​`wrapper.conf`​ ファイルでこのパラメーターを指定できます。

## [](#expose-headers-ヘッダーを公開-オプションの設定)Expose Headers (ヘッダーを公開) オプションの設定

ポリシーで ​`Expose Headers`​ オプションを設定し、アプリケーション (標準のプロキシなど) が HTTP リクエスターを使用している場合、プロパティはヘッダーとしてバックエンドにリダイレクトされます。

各項目で、保護されたリソースへの元の要求は X-AGW- + <key>=<value> 形式を使用して HTTP ヘッダーで強化されます。前のセクションの応答例では、次のヘッダーが追加されています。

```text
---
X-AGW-uid=john.doe
X-AGW-mail=john.doe@example.com
X-AGW-token_type=Bearer
---
```

伝播されたプロパティには、​`scope`​ および ​`expires_in`​ オブジェクトと配列は含まれません。

フロー内の以降の処理では、検証エンドポイントからの元の解析していない応答を使用できます。情報は認証オブジェクトに保存されます。

たとえば、​`mail`​ 項目がポリシーに返される場合、次の DataWeave 2.0 式を使用してこの項目の値にアクセスできます。

`#[authentication.properties.userProperties.mail]`

次の DataWeave 2.0 式を使用して、OAuth2 トークンのクライアント ID を取得できます。

`#[authentication.principal]`

## [](#プロキシを使用したトークン検証エンドポイントとの通信)プロキシを使用したトークン検証エンドポイントとの通信

Mule Runtime Engine の起動時に次のプロパティを指定することで、Mule OAuth プロバイダーポリシーを使用した OAuth 2.0 アクセストークン適用を有効にして、ゲートウェイプロキシ設定を使用できます。

`anypoint.platform.external_authentication_provider_enable_proxy_settings=<true|false(default)>`

このプロパティを有効にすると、次のパラメーターを設定している場合、ポリシーは Mule プロキシ設定を使用します。

- `anypoint.platform.proxy_host=localhost`
- `anypoint.platform.proxy_port=8080`

## [](#faqs)FAQs

**ポリシーで OAuth 2.0 トークンを生成できますか?**

番号ポリシーはトークンの検証のみを行います。

**ポリシーで他の OAuth プロバイダーを使用できますか?**

いいえ。 このポリシーは、​[Mule OAuth プロバイダー](https://docs.mulesoft.com/jp/api-manager/latest/mule-oauth-provider-landing-page)​とのみ連携するように設計されています。このポリシーを他の OAuth プロバイダー (Facebook、Google、Azure など) で使用することはできません。

**Mule OAuth プロバイダー検証エンドポイントがポリシーによって送信された要求を拒否している場合はどうすればよいですか?**

検証エンドポイントが要求を拒否している場合は、ポリシーで設定された URL がポリシーを実行中のマシンから到達可能かどうか、および要求を正常に完了するために認証は不要かどうかを確認します。ユースケースで検証エンドポイントが保護されている必要がある場合は、​[Open ID Connect ポリシー](https://docs.mulesoft.com/jp/mule-gateway/policies-included-openid-token-enforcement)​に切り替えることができます。

**OAuth トークンがキャッシュされる場所は?**

OAuth 2.0 トークンはメモリにのみキャッシュされ、ディスクに書き込まれることはありません。

**ポリシーは要求ごとに Anypoint Platform と通信しますか?**

いいえ。ポリシーは以前に Mule Runtime Engine によって取得されたクライアントアプリケーションを使用します。 これにより、管理プレーンとの接続が失われた場合でも、ポリシーが機能し続けます。ディスクに書き込まれるクライアントアプリケーション情報を暗号化する場合は、​[ランタイムでゲートウェイ暗号化を設定します](https://docs.mulesoft.com/jp/mule-gateway/mule-gateway-encryption-mule4)​。

**Mule OAuth プロバイダーポリシーを使用した OAuth 2.0 アクセストークン適用を設定した後に、レート制限 SLA ポリシーを設定できますか?**

はい、できます。Mule OAuth プロバイダーポリシーを使用した OAuth 2.0 アクセストークン適用の後に、レート制限 SLA ポリシーを適用し、次の DataWeave 2.0 式を使用して ​`Client ID Expression`​ 値を指定します。

`#[authentication.principal]`

リクエスターの ID は、Mule OAuth プロバイダーポリシーを使用した OAuth 2.0 アクセストークン適用によってすでに検証されているため、​`Client Secret Expression`​ 項目は空のままにしておくことができます。

**トークンが検証された後に、トークンに関連付けられた情報をどこで確認できますか?**​ この情報は認証オブジェクトにあります。詳細は、​[「Mule アプリケーションのトークン検証エンドポイント情報」](#leveraging-TVE-information)​を参照してください。

## [](#関連情報)関連情報

- [Mule OAuth 2.0 プロバイダー](https://docs.mulesoft.com/jp/api-manager/latest/mule-oauth-provider-landing-page)
- [Mule 4.x HTTP Requester Connector](https://docs.mulesoft.com/jp/http-connector/1.10/http-documentation)
- [統合ユーザーと OpenID Connect イントロスペクションエンドポイントのクライアント管理](https://docs.mulesoft.com/jp/access-management/managing-api-clients)