# mulesoft Oauth2 Provider Module - Full Documentation # OAuth2 Provider Module OAuth2 Provider Module v1.0 OAuth2 Provider Module を使用すると、Mule Runtime Engine (Mule) アプリケーションを OAuth2 ダンスの認証マネージャーとして設定できます。 この役割を持つことで、アプリケーションは、既に登録済みのクライアントの認証、トークンの付与、トークンの検証、クライアントの登録と削除のすべてをフローの実行中に行うことができます。 次のドキュメントは、読者が OAuth2 認証プロトコルに関する基本的な知識を持っていることを前提としています。詳細は、 [RFC-6749](https://tools.ietf.org/html/rfc6749)​ を参照してください。 アプリケーションを OAuth2 ダンスのクライアントとして動作させる場合は、代わりに ​[OAuth Module](https://docs.mulesoft.com/jp/oauth-module/latest/)​ を使用する必要があります。 ## [](#始める前に)始める前に このモジュールを使用するには、以下に精通している必要があります。 - Anypoint Connector - Mule Runtime Engine (Mule) - Mule フローの要素とグローバル要素 - Anypoint Studio (Studio) を使用した Mule アプリケーションの作成 ## [](#exchange-のテンプレートと例の使用)Exchange のテンプレートと例の使用 [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ は、アプリケーションのスタートポイントとして使用できるテンプレートと、完全なソリューションを具体的に示した例を提供しています。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [Exchange を使用したコネクタ、テンプレート、およびサンプルの検出](https://docs.mulesoft.com/connectors/introduction/intro-use-exchange) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module 1.1 OAuth2 Provider Module を使用すると、Mule Runtime Engine (Mule) アプリケーションを OAuth2 ダンスの認証マネージャーとして設定できます。 この役割を持つことで、アプリケーションは、既に登録済みのクライアントの認証、トークンの付与、トークンの検証、クライアントの登録と削除のすべてをフローの実行中に行うことができます。 次のドキュメントは、読者が OAuth2 認証プロトコルに関する基本的な知識を持っていることを前提としています。詳細は、 [RFC-6749](https://tools.ietf.org/html/rfc6749)​ を参照してください。 アプリケーションを OAuth2 ダンスのクライアントとして動作させる場合は、代わりに ​[OAuth Module](https://docs.mulesoft.com/jp/oauth-module/latest/)​ を使用する必要があります。 ## [](#始める前に)始める前に このモジュールを使用するには、以下に精通している必要があります。 - Anypoint Connector - Mule Runtime Engine (Mule) - Mule フローの要素とグローバル要素 - Anypoint Studio (Studio) を使用した Mule アプリケーションの作成 ## [](#exchange-のテンプレートと例の使用)Exchange のテンプレートと例の使用 [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ は、アプリケーションのスタートポイントとして使用できるテンプレートと、完全なソリューションを具体的に示した例を提供しています。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [Exchange を使用したコネクタ、テンプレート、およびサンプルの検出](https://docs.mulesoft.com/connectors/introduction/intro-use-exchange) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module 1.1 リファレンス OAuth2 Provider Module を使用すると、Mule Runtime Engine (Mule) アプリケーションを OAuth2 ダンスの認証マネージャーとして設定できます。 この役割を持つことで、アプリケーションは、既に登録済みのクライアントの認証、トークンの付与、トークンの検証、クライアントの登録と削除のすべてをフローの実行中に行うことができます。 ## [](#設定)設定 * * * ### [](#config)デフォルト設定 OAuth2 Provider Module 設定 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x

Provider Name (プロバイダー名)

String (文字列)

API の顧客に提供されるプロバイダー名。これは、OAuth2 API の一部の応答に使用されます。

リスナー設定

String (文字列)

トークンエンドポイントと認証エンドポイントを処理する HTTP リスナー設定の参照用の名前。

x

クライアント検証レートリミッター

特定の操作へのアクセスを制御するために使用されるレートリミッター。指定されていない場合、PeriodRateLimiter がデフォルトとして使用されます。

Client Store (クライアントストア)

Object Store (オブジェクトストア)

シークレットなどのクライアント設定情報を取得できるストア。クライアントストアが指定されていない場合は、デフォルトのメモリ内オブジェクトストアが設定されます。

Resource Owner Security Provider (リソースオーナーセキュリティプロバイダー)

String (文字列)

リソースオーナーを認証するために使用されるセキュリティプロバイダー。​CLIENT_CREDENTIALS​ 許可種別のみが使用される場合は不要です。Spring Module の例は、​「OAuth2 プロバイダーの移行」​を参照してください。

Client Security Provider (クライアントセキュリティプロバイダー)

String (文字列)

クライアントを認証するために使用されるセキュリティプロバイダー。公開クライアントまたは非公開クライアントとシークレットのみを使用する場合は不要です。

Token Generator Strategy (トークンジェネレーター戦略)

TokenGeneratorStrategy

アクセストークンを生成するために使用される戦略。TokenGeneratorStrategy を実装するクラスを参照する必要があります。

Supported Grant Types (サポートされる付与種別)

Enumeration (列挙)。次のいずれかになります。

  • AUTHORIZATION_CODE​

  • IMPLICIT

  • RESOURCE_OWNER_PASSWORD_CREDENTIALS​

  • CLIENT_CREDENTIALS​

このプロバイダーでサポートするカンマ区切りの許可種別。何も指定されていない場合、認証コード許可種別のみがサポートされます。

AUTHORIZATION_CODE

Scopes (スコープ)

String (文字列)

サポートされるスコープのカンマ区切りリスト。

Default Scopes (デフォルトスコープ)

String (文字列)

何も定義されていない場合にクライアントに設定されるデフォルトスコープのカンマ区切りリスト。

Token Config (トークン設定)

トークン関連の動作を設定するための情報。

Authorization Config (認証設定)

認証処理動作を設定するための情報

Clients (クライアント)

クライアントのリスト。

Expiration Policy (有効期限ポリシー)

動的設定インスタンスがアイドル状態を続けられる最小時間を設定します。この時間が経過すると、Mule Runtime で期限切れに相当するとみなされます。これは、インスタンスが有効期限の対象となった瞬間にプラットフォームでそのインスタンスが期限切れになるということではありません。必要に応じて、インスタンスがパージされます。

## [](#操作)操作 - [Create Client](#createClient) - [Delete Client](#deleteClient) - [Revoke Token](#revokeToken) - [Validate Token](#validateToken) ### [](#createClient)Create Client `` 新しいクライアントを作成して、設定したクライアントストアに保存します。 ```xml ``` #### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

トークン検証に使用するグローバルに定義された OAuth プロバイダーの名前。

x

Client Id (クライアント ID)

String (文字列)

作成されたクライアントに割り当てる ID。

x

Type (型)

Enumeration (列挙)。次のいずれかになります。

  • CONFIDENTIAL

  • PUBLIC

クライアントの種類。有効な値は、PUBLIC (公開) (クライアントはログイン情報の機密性を維持できない) または CONFIDENTIAL (機密) (クライアントはログイン情報の機密性を維持できる) です。

PUBLIC

Secret (シークレット)

String (文字列)

Client Name (クライアント名)

String (文字列)

クライアントのわかりやすい名前。

Description (説明)

String (文字列)

クライアントの簡単な説明。

Principal (プリンシパル)

String (文字列)

セキュリティプロバイダーで ID を使用できない場合に使用する省略可能なプリンシパル。

Redirect Uris (リダイレクト URI)

Array of String (文字列の配列)

クライアントが OAuth プロバイダーに要求を実行するときに使用されるリダイレクト URI のリストに解決される式。

Authorized Grant Types (認証済み許可種別)

Array of Enumeration (列挙の配列)。次のいずれかになります。

  • AUTHORIZATION_CODE​

  • REFRESH_TOKEN​

  • TOKEN

  • PASSWORD

  • CLIENT_CREDENTIALS

クライアントがトークンを要求するために使用できる認証済みの許可種別のリストに解決される式。

Scopes (スコープ)

Array of String (文字列の配列)

クライアントがサポートするスコープのリストに解決される式。何も指定しないと、​全般設定​ のデフォルトスコープが使用されます。

Fail If Present (存在する場合は失敗)

Boolean (ブール)

同じ ID のクライアントがすでに登録されている場合の処理を定義します。​true​ の場合、エラーが生じます。そうでない場合は、クライアントが更新されます。

false

### [](#次の設定の場合)次の設定の場合 [デフォルト設定](#config) #### [](#スロー)スロー - OAUTH2-PROVIDER:CLIENT\_ALREADY\_EXISTS​ - 同じクライアント ID のクライアントがすでに存在し、​**\[Fail If Present (存在する場合は失敗)\]**​ が ​`true`​ に設定されている場合。 - OAUTH2-PROVIDER:INVALID\_CONFIGURATION​ - 指定したパラメーターが有効でない場合。​**\[Authorized Grant Types (認証済み許可種別)\]**​ が ​AUTHORIZATION\_CODE​ だが、リダイレクト URI がないなど。 ### [](#deleteClient)Delete Client `` ストアからクライアントを削除します。 #### [](#パラメーター-3)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

トークン検証に使用するグローバルに定義された OAuth プロバイダーの名前。

x

Client Id (クライアント ID)

String (文字列)

削除するクライアントの ID。

x

### [](#次の設定の場合-2)次の設定の場合 [デフォルト設定](#config) #### [](#スロー-2)スロー OAUTH2-PROVIDER:NO\_SUCH\_CLIENT​ - 削除されるクライアントが存在しない。 ### [](#revokeToken)Revoke Token `` アクセストークンまたは更新トークンを失効させ、関連する更新トークンまたはアクセストークンも無効化します。クライアントログイン情報を検証する必要がある場合、トークンを失効させる前に validateClient ログイン情報を使用します。 #### [](#パラメーター-4)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

トークン検証に使用するグローバルに定義された OAuth プロバイダーの名前。

x

Token (トークン)

String (文字列)

失効させるトークン (アクセストークンまたは更新トークン)。

x

### [](#次の設定の場合-3)次の設定の場合 [デフォルト設定](#config) #### [](#スロー-3)スロー OAUTH2-PROVIDER:INVALID\_TOKEN​ - 失効させるトークンが有効でない。 ### [](#validateToken)Validate Token `` 有効なアクセストークンが指定されているかどうかをチェックします。指定したトークンが付与済みで有効な状態であることを検証します。また、定義されている場合は、トークンスコープやリソースオーナーロールが指定されたものと一致しているかどうかもチェックします。 指定したトークンが有効であれば、次の情報を含むペイロードが JSON として設定されます。 - expires\_in: トークンが無効とみなされるまでの残り時間 (秒)。 - scope: トークンに関連付けられたスコープ (スペース区切り)。 - client\_id: このトークンを要求したクライアントの ID。 - username: このトークンが要求されることを認証したリソースオーナーのユーザー名。 操作を実行する前にペイロードセットを保持するには、ペイロードを上書きせずに、​`target`​ および ​`targetValue`​ 属性を使用して、JSON 情報を変数に設定します。 Validate Token のパラメーターを次に示します。 #### [](#パラメーター-5)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Access Token (アクセストークン)

String (文字列)

#[(attributes.headers['authorization'] splitBy ' ')[1]]

Scopes (スコープ)

Array of String (文字列の配列)

トークンを検証するときに適用するスコープのリストに解決される式。

Resource Owner Roles (リソースオーナーロール)

Array of String (文字列の配列)

トークンを検証するときに適用するリソースオーナーロール。これは、トークンを検証するときに適用するリソースオーナーロールのリストに解決される式です。

Target Variable (対象変数)

String (文字列)

操作の出力を保存する変数の名前。

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。この式の結果が対象変数に保存されます。

#[payload]

#### [](#出力)出力

型

String (文字列)

### [](#次の設定の場合-4)次の設定の場合 [デフォルト設定](#config) #### [](#スロー-4)スロー OAUTH2-PROVIDER:TOKEN\_UNAUTHORIZED​ - 検証されるトークンが有効でない。 ## [](#型)型 ### [](#TokenConfig)トークンの設定 トークン処理とトークンエンドポイントに関連する設定です。
項目 型 説明 デフォルト値 必須

Path (パス)

String (文字列)

新しいトークンを要求するときにコールするエンドポイント。

/token

Token Store (トークンストア)

Object Store (オブジェクトストア)

トークン関連のデータを保存するための ObjectStore 設定情報。

Refresh Token Strategy (更新トークン戦略)

使用する更新トークン戦略。デフォルトでは、更新トークンは生成されません。

Token Ttl (トークン TTL)

Number (数値)

アクセストークンコードの有効期限が切れるまでの秒数。

86400

Token Ttl Time Unit (トークン TTL 時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

トークン TTL の時間単位。

SECONDS

### [](#AuthorizationConfig)Authorization Config (認証設定) 認証コード処理と認証エンドポイントに関連する設定です。
項目 型 説明 デフォルト値 必須

Login Page (ログインページ)

String (文字列)

リソースオーナーがログイン情報を提供するための Web ページへの相対ファイルパス。
デフォルトページを使用しない場合は、設定した HTML 内で参照される外部ファイルを処理する必要があります。それらは OAuth プロバイダーでは処理されません。
たとえば、ログインページの HTML が外部の ​.css​ スタイルファイルを参照する場合、そのファイルを提供するエンドポイントが存在する必要があります。​「HTTP Load Static Resource」​を参照してください。

www-static/auth.html

Path (パス)

String (文字列)

認証要求をリスンするための HTTP サーバーの認証エンドポイントへの URL の相対パス。

/authorize

Authorization Code Store (認証コードストア)

Object Store (オブジェクトストア)

グローバルに定義されたオブジェクトストアまたは非公開オブジェクトストアの定義への参照。生成された認証コードを保存するために使用されます。

エントリ TTL を 600 SECONDS (600 秒) に設定して ObjectStoreManager から作成された永続的なオブジェクトストア。

### [](#Client)Client (クライアント) トークンを要求する権限があるすべての登録済みクライアント。リストは、実行時に ​[Create Client](#createClient)​ 操作と ​[Delete Client](#deleteClient)​ 操作によって変更できます。 ```xml ``` 各登録済みクライアントには、次の情報が設定されたエントリがあります。
項目 型 説明 デフォルト値 必須

Client Id (クライアント ID)

String (文字列)

クライアントを参照するために使用される一意の ID。

x

Principal (プリンシパル)

String (文字列)

セキュリティプロバイダーで ID を使用できない場合に使用する省略可能なプリンシパル。一部のセキュリティプロバイダーではクライアントユーザー名に clientId を使用できません。そのような場合は、認証にクライアントのプリンシパルが使用されます。

Client Name (クライアント名)

String (文字列)

クライアントの名前。

Description (説明)

String (文字列)

クライアントの短い説明。

Secret (シークレット)

String (文字列)

クライアントを認証するために使用されるクライアントシークレット。​[Type (種別)]​ が CONFIDENTIAL の場合のみ必要です。

Client Redirect Uris (クライアントリダイレクト URI)

Array of String (文字列の配列)

要求の処理後にクライアントに応答するために使用する登録済みリダイレクト URI のリスト。

大部分の要求では、新しいリダイレクト URI を定義できるため、これらが常に考慮されるわけではありません。​「新しい値の処理」​も参照してください。

<oauth2-provider:client-scope value="USER"/>

Client Authorized Grant Types (クライアント認証済み許可種別)

Array of Enumeration (列挙の配列)。次のいずれかになります。

  • AUTHORIZATION_CODE​

  • REFRESH_TOKEN​

  • TOKEN

  • PASSWORD

  • CLIENT_CREDENTIALS

このクライアントがトークンを取得するために正常に実行できる OAuth フローを定義する許可種別。​「新しい値の処理」​も参照してください。

Client Scopes (クライアントスコープ)

Array of String (文字列の配列)

このクライアントに一致するスコープ。クライアント ID は一致するが、スコープが異なる要求を受信した場合、その要求は処理されません。​「新しい値の処理」​も参照してください。

Type (種別)

Enumeration (列挙)。次のいずれかになります。

  • CONFIDENTIAL

  • PUBLIC

クライアント種別は、クライアントがそのログイン情報の機密性を維持できるかどうかを定義します。有効な値は、​PUBLIC​ (公開) (クライアントはログイン情報の機密性を維持できない) または ​CONFIDENTIAL​ (機密) (クライアントはログイン情報の機密性を維持できる) です。

PUBLIC

クライアントリダイレクト URI、クライアント認証済み許可種別、クライアントスコープの場合、新しい XML タグにそれぞれの新しい値を指定します。 `` `` ### [](#ExpirationPolicy)Expiration Policy (有効期限ポリシー)
項目 型 説明 デフォルト値 必須

Max Idle Time (最大アイドル時間)

Number (数値)

有効期限の対象とみなされるまで、動的設定インスタンスがアイドル状態を維持できる最大時間のスカラー時間値

Time Unit (時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

maxIdleTime 属性の時間単位

### [](#noRefreshToken)No Refresh Token (更新トークンなし) すべてのアクセストークンに更新トークンが付与されません。その結果、更新トークン要求を受信すると、それは常に拒否されます。
項目 型 説明 デフォルト値 必須

Token Generator Strategy (トークンジェネレーター戦略)

TokenGeneratorStrategy

### [](#singleRefreshToken)Single Refresh Token (単一更新トークン) 新しいアクセストークンが付与されるたびに、1 つの更新トークンがそれに関連付けられます。アクセストークンを更新するたびに同じ更新トークンを使用できます。
項目 型 説明 デフォルト値 必須

Object Store (オブジェクトストア)

Object Store (オブジェクトストア)

生成された更新トークンを保存するためのグローバルに定義されたオブジェクトストアまたは非公開オブジェクトストアの定義への参照。オブジェクトストアはアクセストークンオブジェクトスコアとは異なる必要があります。

エントリ TTL を 86400 SECONDS (86400 秒) に設定して ObjectStoreManager から作成された永続的なオブジェクトストア。

### [](#multipleRefreshTokens)Multiple Refresh Tokens (複数更新トークン) 更新トークン要求が実行されるたびに新しい更新トークンが生成されます。その後、以前の更新トークンは無効になります。
項目 型 説明 デフォルト値 必須

Object Store (オブジェクトストア)

Object Store (オブジェクトストア)

生成された更新トークンを保存するためのグローバルに定義されたオブジェクトストアまたは非公開オブジェクトストアの定義への参照。オブジェクトストアはアクセストークンオブジェクトスコアとは異なる必要があります。

エントリ TTL を 86400 SECONDS (86400 秒) に設定して ObjectStoreManager から作成された永続的なオブジェクトストア。

### [](#PeriodRateLimiter)Period Rate Limiter (期間レートリミッター) \[Period Rate Limiter (期間レートリミッター)\] では、期間に基づいてレート制限を処理します。 無効なログイン情報を使用している場合にクライアントが連続して検証することを防ぐメカニズムを設定できます。
項目 型 説明 デフォルト値 必須

Duration (所要時間)

Number (数値)

レートリミッターをリセットするまでに待機する時間。つまり、​duration (時間)​ の長さの間は、クライアント検証が失敗するたびに、それが失敗数に追加されます。

600

Duration Time Unit (期間の時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

SECONDS

Maximum Failure Count (最大失敗数)

Number (数値)

要求が先制的に拒否されるまでに、時間内に許容される最大失敗数。

5

## [](#oauth-ダンス)OAuth ダンス OAuth ダンスは HTTP を使用して実行されるため、OAuth2 プロバイダーは ​[Mule HTTP Connector](https://docs.mulesoft.com/http-connector/latest/)​ を使用します。 そのため、Mule アプリケーションには、OAuth2 プロバイダー設定の定義以外に、プロバイダーが使用する HTTP リスナー設定も必要です。 設定が完了すると、プロバイダーは次のように動作します。 認証コードとトークン要求をリスンするために 2 つの HTTP エンドポイントが OAuth2 定義に従って作成されます。これらは Mule アプリケーションとは独立して動作し、HTTP を使用して応答します。 プロバイダーはトークンが認証済みかどうかを確認する ​[Validate Token](#validateToken)​ 操作を定義します。この操作は、フローの任意の場所に追加して実行を制御することができます。トークンが認証済みであれば、フローはペイロードのトークン情報を設定して実行を続行し、認証済みでない場合は ​`TOKEN_UNAUTHORIZED`​ エラーが発生します。アプリケーションでトークン認証が必要な部分には、この操作を追加する必要があります。 ほとんどの場合、トークン検証は HTTP リスナーと併せて使用されるので、失敗した場合はリスナーの応答メカニズムによってエラーを処理し、リクエスターに適切に応答することができます。この種類のエラーを処理するために追加ロジックを追加することができます。 最後に、必要に応じてクライアントの追加または削除やトークンの取り消しを行う追加操作が提供されます。 ## [](#セキュリティプロバイダー)セキュリティプロバイダー [全般設定](#general-configuration)​で前述したように、アプリケーション内で 2 つのセキュリティプロバイダーを定義して、後で OAuth2 設定要素によって参照されるようにする必要があります。 これを実行する方法の 1 つは、Spring Framework を使用して両方のセキュリティプロバイダーを定義し、​[Spring Module](https://docs.mulesoft.com/spring-module/latest/)​ を使用して Mule セキュリティマネージャーにプロバイダーを追加することです。 ```xml ``` ## [](#general-configuration)全般設定 ```xml ``` ## [](#関連情報)関連情報 [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module 1.2 OAuth2 Provider Module を使用すると、Mule Runtime Engine (Mule) アプリケーションを OAuth2 ダンスの認証マネージャーとして設定できます。 この役割を持つことで、アプリケーションは、既に登録済みのクライアントの認証、トークンの付与、トークンの検証、クライアントの登録と削除のすべてをフローの実行中に行うことができます。 次のドキュメントは、読者が OAuth2 認証プロトコルに関する基本的な知識を持っていることを前提としています。詳細は、 [RFC-6749](https://tools.ietf.org/html/rfc6749)​ を参照してください。 アプリケーションを OAuth2 ダンスのクライアントとして動作させる場合は、代わりに ​[OAuth Module](https://docs.mulesoft.com/jp/oauth-module/latest/)​ を使用する必要があります。 ## [](#始める前に)始める前に このモジュールを使用するには、以下に精通している必要があります。 - Anypoint Connector - Mule Runtime Engine (Mule) - Mule フローの要素とグローバル要素 - Anypoint Studio (Studio) を使用した Mule アプリケーションの作成 ## [](#exchange-のテンプレートと例の使用)Exchange のテンプレートと例の使用 [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ は、アプリケーションのスタートポイントとして使用できるテンプレートと、完全なソリューションを具体的に示した例を提供しています。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [Exchange を使用したコネクタ、テンプレート、およびサンプルの検出](https://docs.mulesoft.com/connectors/introduction/intro-use-exchange) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module 1.2 リファレンス OAuth2 Provider Module を使用すると、Mule Runtime Engine (Mule) アプリケーションを OAuth2 ダンスの認証マネージャーとして設定できます。 この役割を持つことで、アプリケーションは、既に登録済みのクライアントの認証、トークンの付与、トークンの検証、クライアントの登録と削除のすべてをフローの実行中に行うことができます。 ## [](#設定)設定 * * * ### [](#config)デフォルト設定 OAuth2 Provider Module 設定 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x

Provider Name (プロバイダー名)

String (文字列)

API の顧客に提供されるプロバイダー名。これは、OAuth2 API の一部の応答に使用されます。

リスナー設定

String (文字列)

トークンエンドポイントと認証エンドポイントを処理する HTTP リスナー設定の参照用の名前。

x

クライアント検証レートリミッター

特定の操作へのアクセスを制御するために使用されるレートリミッター。指定されていない場合、PeriodRateLimiter がデフォルトとして使用されます。

Client Store (クライアントストア)

Object Store (オブジェクトストア)

シークレットなどのクライアント設定情報を取得できるストア。クライアントストアが指定されていない場合は、デフォルトのメモリ内オブジェクトストアが設定されます。

Resource Owner Security Provider (リソースオーナーセキュリティプロバイダー)

String (文字列)

リソースオーナーを認証するために使用されるセキュリティプロバイダー。​CLIENT_CREDENTIALS​ 許可種別のみが使用される場合は不要です。Spring Module の例は、​「OAuth2 プロバイダーの移行」​を参照してください。

Client Security Provider (クライアントセキュリティプロバイダー)

String (文字列)

クライアントを認証するために使用されるセキュリティプロバイダー。公開クライアントまたは非公開クライアントとシークレットのみを使用する場合は不要です。

Token Generator Strategy (トークンジェネレーター戦略)

TokenGeneratorStrategy

アクセストークンを生成するために使用される戦略。TokenGeneratorStrategy を実装するクラスを参照する必要があります。

Supported Grant Types (サポートされる付与種別)

Enumeration (列挙)。次のいずれかになります。

  • AUTHORIZATION_CODE​

  • IMPLICIT

  • RESOURCE_OWNER_PASSWORD_CREDENTIALS​

  • CLIENT_CREDENTIALS​

このプロバイダーでサポートするカンマ区切りの許可種別。何も指定されていない場合、認証コード許可種別のみがサポートされます。

AUTHORIZATION_CODE

Scopes (スコープ)

String (文字列)

サポートされるスコープのカンマ区切りリスト。

Default Scopes (デフォルトスコープ)

String (文字列)

何も定義されていない場合にクライアントに設定されるデフォルトスコープのカンマ区切りリスト。

Token Config (トークン設定)

トークン関連の動作を設定するための情報。

Authorization Config (認証設定)

認証処理動作を設定するための情報

Clients (クライアント)

クライアントのリスト。

Expiration Policy (有効期限ポリシー)

動的設定インスタンスがアイドル状態を続けられる最小時間を設定します。この時間が経過すると、Mule Runtime で期限切れに相当するとみなされます。これは、インスタンスが有効期限の対象となった瞬間にプラットフォームでそのインスタンスが期限切れになるということではありません。必要に応じて、インスタンスがパージされます。

## [](#操作)操作 - [Create Client](#createClient) - [Delete Client](#deleteClient) - [Revoke Token](#revokeToken) - [Validate Token](#validateToken) ### [](#createClient)Create Client `` 新しいクライアントを作成して、設定したクライアントストアに保存します。 ```xml ``` #### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

トークン検証に使用するグローバルに定義された OAuth プロバイダーの名前。

x

Client Id (クライアント ID)

String (文字列)

作成されたクライアントに割り当てる ID。

x

Type (種別)

Enumeration (列挙)。次のいずれかになります。

  • CONFIDENTIAL

  • PUBLIC

クライアントの種類。有効な値は、PUBLIC (公開) (クライアントはログイン情報の機密性を維持できない) または CONFIDENTIAL (機密) (クライアントはログイン情報の機密性を維持できる) です。

PUBLIC

Secret (シークレット)

String (文字列)

Client Name (クライアント名)

String (文字列)

クライアントのわかりやすい名前。

Description (説明)

String (文字列)

クライアントの簡単な説明。

Principal (プリンシパル)

String (文字列)

セキュリティプロバイダーで ID を使用できない場合に使用する省略可能なプリンシパル。

Redirect Uris (リダイレクト URI)

Array of String (文字列の配列)

クライアントが OAuth プロバイダーに要求を実行するときに使用されるリダイレクト URI のリストに解決される式。

Authorized Grant Types (認証済み許可種別)

Array of Enumeration (列挙の配列)。次のいずれかになります。

  • AUTHORIZATION_CODE​

  • REFRESH_TOKEN​

  • TOKEN

  • PASSWORD

  • CLIENT_CREDENTIALS

クライアントがトークンを要求するために使用できる認証済みの許可種別のリストに解決される式。

Scopes (スコープ)

Array of String (文字列の配列)

クライアントがサポートするスコープのリストに解決される式。何も指定しないと、​全般設定​ のデフォルトスコープが使用されます。

Fail If Present (存在する場合は失敗)

Boolean (ブール)

同じ ID のクライアントがすでに登録されている場合の処理を定義します。​true​ の場合、エラーが生じます。そうでない場合は、クライアントが更新されます。

false

### [](#次の設定の場合)次の設定の場合 [デフォルト設定](#config) #### [](#スロー)スロー - OAUTH2-PROVIDER:CLIENT\_ALREADY\_EXISTS​ - 同じクライアント ID のクライアントがすでに存在し、​**\[Fail If Present (存在する場合は失敗)\]**​ が ​`true`​ に設定されている場合。 - OAUTH2-PROVIDER:INVALID\_CONFIGURATION​ - 指定したパラメーターが有効でない場合。​**\[Authorized Grant Types (認証済み許可種別)\]**​ が ​AUTHORIZATION\_CODE​ だが、リダイレクト URI がないなど。 ### [](#deleteClient)Delete Client `` ストアからクライアントを削除します。 #### [](#パラメーター-3)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

トークン検証に使用するグローバルに定義された OAuth プロバイダーの名前。

x

Client Id (クライアント ID)

String (文字列)

削除するクライアントの ID。

x

### [](#次の設定の場合-2)次の設定の場合 [デフォルト設定](#config) #### [](#スロー-2)スロー OAUTH2-PROVIDER:NO\_SUCH\_CLIENT​ - 削除されるクライアントが存在しない。 ### [](#revokeToken)Revoke Token `` アクセストークンまたは更新トークンを失効させ、関連する更新トークンまたはアクセストークンも無効化します。クライアントログイン情報を検証する必要がある場合、トークンを失効させる前に validateClient ログイン情報を使用します。 #### [](#パラメーター-4)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

トークン検証に使用するグローバルに定義された OAuth プロバイダーの名前。

x

Token (トークン)

String (文字列)

失効させるトークン (アクセストークンまたは更新トークン)。

x

### [](#次の設定の場合-3)次の設定の場合 [デフォルト設定](#config) #### [](#スロー-3)スロー OAUTH2-PROVIDER:INVALID\_TOKEN​ - 失効させるトークンが有効でない。 ### [](#validateToken)Validate Token `` 有効なアクセストークンが指定されているかどうかをチェックします。指定したトークンが付与済みで有効な状態であることを検証します。また、定義されている場合は、トークンスコープやリソースオーナーロールが指定されたものと一致しているかどうかもチェックします。 指定したトークンが有効であれば、次の情報を含むペイロードが JSON として設定されます。 - expires\_in: トークンが無効とみなされるまでの残り時間 (秒)。 - scope: トークンに関連付けられたスコープ (スペース区切り)。 - client\_id: このトークンを要求したクライアントの ID。 - username: このトークンが要求されることを認証したリソースオーナーのユーザー名。 操作を実行する前にペイロードセットを保持するには、ペイロードを上書きせずに、​`target`​ および ​`targetValue`​ 属性を使用して、JSON 情報を変数に設定します。 Validate Token のパラメーターを次に示します。 #### [](#パラメーター-5)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Access Token (アクセストークン)

String (文字列)

#[(attributes.headers['authorization'] splitBy ' ')[1]]

Scopes (スコープ)

Array of String (文字列の配列)

トークンを検証するときに適用するスコープのリストに解決される式。

Resource Owner Roles (リソースオーナーロール)

Array of String (文字列の配列)

トークンを検証するときに適用するリソースオーナーロール。これは、トークンを検証するときに適用するリソースオーナーロールのリストに解決される式です。

Target Variable (対象変数)

String (文字列)

操作の出力を保存する変数の名前。

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。この式の結果が対象変数に保存されます。

#[payload]

#### [](#出力)出力

型

String (文字列)

### [](#次の設定の場合-4)次の設定の場合 [デフォルト設定](#config) #### [](#スロー-4)スロー OAUTH2-PROVIDER:TOKEN\_UNAUTHORIZED​ - 検証されるトークンが有効でない。 ## [](#型)型 ### [](#TokenConfig)トークンの設定 トークン処理とトークンエンドポイントに関連する設定です。
項目 型 説明 デフォルト値 必須

Path (パス)

String (文字列)

新しいトークンを要求するときにコールするエンドポイント。

/token

Token Store (トークンストア)

Object Store (オブジェクトストア)

トークン関連のデータを保存するための ObjectStore 設定情報。

Refresh Token Strategy (更新トークン戦略)

使用する更新トークン戦略。デフォルトでは、更新トークンは生成されません。

Token Ttl (トークン TTL)

Number (数値)

アクセストークンコードの有効期限が切れるまでの秒数。

86400

Token Ttl Time Unit (トークン TTL 時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

トークン TTL の時間単位。

SECONDS

### [](#AuthorizationConfig)Authorization Config (認証設定) 認証コード処理と認証エンドポイントに関連する設定です。
項目 型 説明 デフォルト値 必須

Login Page (ログインページ)

String (文字列)

リソースオーナーがログイン情報を提供するための Web ページへの相対ファイルパス。
デフォルトページを使用しない場合は、設定した HTML 内で参照される外部ファイルを処理する必要があります。それらは OAuth プロバイダーでは処理されません。
たとえば、ログインページの HTML が外部の ​.css​ スタイルファイルを参照する場合、そのファイルを提供するエンドポイントが存在する必要があります。​「HTTP Load Static Resource」​を参照してください。

www-static/auth.html

Path (パス)

String (文字列)

認証要求をリスンするための HTTP サーバーの認証エンドポイントへの URL の相対パス。

/authorize

Authorization Code Store (認証コードストア)

Object Store (オブジェクトストア)

グローバルに定義されたオブジェクトストアまたは非公開オブジェクトストアの定義への参照。生成された認証コードを保存するために使用されます。

エントリ TTL を 600 SECONDS (600 秒) に設定して ObjectStoreManager から作成された永続的なオブジェクトストア。

### [](#Client)Client (クライアント) トークンを要求する権限があるすべての登録済みクライアント。リストは、実行時に ​[Create Client](#createClient)​ 操作と ​[Delete Client](#deleteClient)​ 操作によって変更できます。 ```xml ``` 各登録済みクライアントには、次の情報が設定されたエントリがあります。
項目 型 説明 デフォルト値 必須

Client Id (クライアント ID)

String (文字列)

クライアントを参照するために使用される一意の ID。

x

Principal (プリンシパル)

String (文字列)

セキュリティプロバイダーで ID を使用できない場合に使用する省略可能なプリンシパル。一部のセキュリティプロバイダーではクライアントユーザー名に clientId を使用できません。そのような場合は、認証にクライアントのプリンシパルが使用されます。

Client Name (クライアント名)

String (文字列)

クライアントの名前。

Description (説明)

String (文字列)

クライアントの短い説明。

Secret (シークレット)

String (文字列)

クライアントを認証するために使用されるクライアントシークレット。​[Type (種別)]​ が CONFIDENTIAL の場合のみ必要です。

Client Redirect Uris (クライアントリダイレクト URI)

Array of String (文字列の配列)

要求の処理後にクライアントに応答するために使用する登録済みリダイレクト URI のリスト。

大部分の要求では、新しいリダイレクト URI を定義できるため、これらが常に考慮されるわけではありません。​「新しい値の処理」​も参照してください。

<oauth2-provider:client-scope value="USER"/>

Client Authorized Grant Types (クライアント認証済み許可種別)

Array of Enumeration (列挙の配列)。次のいずれかになります。

  • AUTHORIZATION_CODE​

  • REFRESH_TOKEN​

  • TOKEN

  • PASSWORD

  • CLIENT_CREDENTIALS

このクライアントがトークンを取得するために正常に実行できる OAuth フローを定義する許可種別。​「新しい値の処理」​も参照してください。

Client Scopes (クライアントスコープ)

Array of String (文字列の配列)

このクライアントに一致するスコープ。クライアント ID は一致するが、スコープが異なる要求を受信した場合、その要求は処理されません。​「新しい値の処理」​も参照してください。

Type (種別)

Enumeration (列挙)。次のいずれかになります。

  • CONFIDENTIAL

  • PUBLIC

クライアント種別は、クライアントがそのログイン情報の機密性を維持できるかどうかを定義します。有効な値は、​PUBLIC​ (公開) (クライアントはログイン情報の機密性を維持できない) または ​CONFIDENTIAL​ (機密) (クライアントはログイン情報の機密性を維持できる) です。

PUBLIC

クライアントリダイレクト URI、クライアント認証済み許可種別、クライアントスコープの場合、新しい XML タグにそれぞれの新しい値を指定します。 `` `` ### [](#ExpirationPolicy)Expiration Policy (有効期限ポリシー)
項目 型 説明 デフォルト値 必須

Max Idle Time (最大アイドル時間)

Number (数値)

有効期限の対象とみなされるまで、動的設定インスタンスがアイドル状態を維持できる最大時間のスカラー時間値

Time Unit (時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

maxIdleTime 属性の時間単位

### [](#noRefreshToken)No Refresh Token (更新トークンなし) すべてのアクセストークンに更新トークンが付与されません。その結果、更新トークン要求を受信すると、それは常に拒否されます。
項目 型 説明 デフォルト値 必須

Token Generator Strategy (トークンジェネレーター戦略)

TokenGeneratorStrategy

### [](#singleRefreshToken)Single Refresh Token (単一更新トークン) 新しいアクセストークンが付与されるたびに、1 つの更新トークンがそれに関連付けられます。アクセストークンを更新するたびに同じ更新トークンを使用できます。
項目 型 説明 デフォルト値 必須

Object Store (オブジェクトストア)

Object Store (オブジェクトストア)

生成された更新トークンを保存するためのグローバルに定義されたオブジェクトストアまたは非公開オブジェクトストアの定義への参照。オブジェクトストアはアクセストークンオブジェクトスコアとは異なる必要があります。

エントリ TTL を 86400 SECONDS (86400 秒) に設定して ObjectStoreManager から作成された永続的なオブジェクトストア。

### [](#multipleRefreshTokens)Multiple Refresh Tokens (複数更新トークン) 更新トークン要求が実行されるたびに新しい更新トークンが生成されます。その後、以前の更新トークンは無効になります。
項目 型 説明 デフォルト値 必須

Object Store (オブジェクトストア)

Object Store (オブジェクトストア)

生成された更新トークンを保存するためのグローバルに定義されたオブジェクトストアまたは非公開オブジェクトストアの定義への参照。オブジェクトストアはアクセストークンオブジェクトスコアとは異なる必要があります。

エントリ TTL を 86400 SECONDS (86400 秒) に設定して ObjectStoreManager から作成された永続的なオブジェクトストア。

### [](#PeriodRateLimiter)Period Rate Limiter (期間レートリミッター) \[Period Rate Limiter (期間レートリミッター)\] では、期間に基づいてレート制限を処理します。 無効なログイン情報を使用している場合にクライアントが連続して検証することを防ぐメカニズムを設定できます。
項目 型 説明 デフォルト値 必須

Duration (所要時間)

Number (数値)

レートリミッターをリセットするまでに待機する時間。つまり、​duration (時間)​ の長さの間は、クライアント検証が失敗するたびに、それが失敗数に追加されます。

600

Duration Time Unit (期間の時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

SECONDS

Maximum Failure Count (最大失敗数)

Number (数値)

要求が先制的に拒否されるまでに、時間内に許容される最大失敗数。

5

## [](#oauth-ダンス)OAuth ダンス OAuth ダンスは HTTP を使用して実行されるため、OAuth2 プロバイダーは ​[Mule HTTP Connector](https://docs.mulesoft.com/http-connector/latest/)​ を使用します。 そのため、Mule アプリケーションには、OAuth2 プロバイダー設定の定義以外に、プロバイダーが使用する HTTP リスナー設定も必要です。 設定が完了すると、プロバイダーは次のように動作します。 認証コードとトークン要求をリスンするために 2 つの HTTP エンドポイントが OAuth2 定義に従って作成されます。これらは Mule アプリケーションとは独立して動作し、HTTP を使用して応答します。 プロバイダーはトークンが認証済みかどうかを確認する ​[Validate Token](#validateToken)​ 操作を定義します。この操作は、フローの任意の場所に追加して実行を制御することができます。トークンが認証済みであれば、フローはペイロードのトークン情報を設定して実行を続行し、認証済みでない場合は ​`TOKEN_UNAUTHORIZED`​ エラーが発生します。アプリケーションでトークン認証が必要な部分には、この操作を追加する必要があります。 ほとんどの場合、トークン検証は HTTP リスナーと併せて使用されるので、失敗した場合はリスナーの応答メカニズムによってエラーを処理し、リクエスターに適切に応答することができます。この種類のエラーを処理するために追加ロジックを追加することができます。 最後に、必要に応じてクライアントの追加または削除やトークンの取り消しを行う追加操作が提供されます。 ## [](#セキュリティプロバイダー)セキュリティプロバイダー [全般設定](#general-configuration)​で前述したように、アプリケーション内で 2 つのセキュリティプロバイダーを定義して、後で OAuth2 設定要素によって参照されるようにする必要があります。 これを実行する方法の 1 つは、Spring Framework を使用して両方のセキュリティプロバイダーを定義し、​[Spring Module](https://docs.mulesoft.com/spring-module/latest/)​ を使用して Mule セキュリティマネージャーにプロバイダーを追加することです。 ```xml ``` ## [](#general-configuration)全般設定 ```xml ``` ## [](#関連情報)関連情報 [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module の XML および Maven サポート XML で Mule アプリケーションを手動でコーディングすることもできますが、Anypoint Studio を使用した方が効率的です。 Anypoint Studio の XML エディターまたはテキストエディターから Mule Runtime Engine (Mule) アプリケーションを手動でコーディングする場合、参照ステートメントを XML Mule フローと Apache Maven ​`pom.xml`​ ファイルの両方に追加することで、アプリケーションでコネクタにアクセスできます。 コネクタを Studio に追加すると、Studio は自動的に XML コードにコネクタの名前空間およびスキーマの場所を入力します。さらに、​`pom.xml`​ ファイルに連動関係を追加します。 ## [](#コネクタの名前空間の追加)コネクタの名前空間の追加 次のコードを設定 XML のヘッダーの ​``​ タグ内に貼り付けます。 ```xml http://www.mulesoft.org/schema/mule/oauth2-provider http://www.mulesoft.org/schema/mule/oauth2-provider/current/mule-oauth2-provider.xsd ``` 次の例は、​``​ XML ブロック内に名前空間ステートメントが配置される方法を示しています。 ```xml ``` ## [](#pom-ファイルの連動関係の追加)POM ファイルの連動関係の追加 Apache Maven ​`pom.xml`​ ファイルは Anypoint Studio によって生成され、Mule アプリケーションの連動関係が含まれます。Mule アプリケーションを手動でコーディングする場合、次の XML スニペットを ​`pom.xml`​ ファイルに含めてこのコネクタにアクセスできるようにします: ```xml com.mulesoft.modules mule-oauth2-provider-module x.x.x mule-plugin ``` `x.x.x`​ を使用しているコネクタに対応するバージョンに置き換えます。 最新の ​`pom.xml`​ ファイル情報を取得する手順は、次のとおりです。 1. [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ に移動します。 2. Exchange で、​**\[Login (ログイン)\]**​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。 3. Exchange で、「​``​」を検索します。 4. コネクタを選択します。 5. 画面の右上付近にある ​**\[Dependency Snippets (連動関係スニペット)\]**​ をクリックします。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module の XML および Maven サポート XML で Mule アプリケーションを手動でコーディングすることもできますが、Anypoint Studio を使用した方が効率的です。 Anypoint Studio の XML エディターまたはテキストエディターから Mule Runtime Engine (Mule) アプリケーションを手動でコーディングする場合、参照ステートメントを XML Mule フローと Apache Maven ​`pom.xml`​ ファイルの両方に追加することで、アプリケーションでコネクタにアクセスできます。 コネクタを Studio に追加すると、Studio は自動的に XML コードにコネクタの名前空間およびスキーマの場所を入力します。さらに、​`pom.xml`​ ファイルに連動関係を追加します。 ## [](#コネクタの名前空間の追加)コネクタの名前空間の追加 次のコードを設定 XML のヘッダーの ​``​ タグ内に貼り付けます。 ```xml http://www.mulesoft.org/schema/mule/oauth2-provider http://www.mulesoft.org/schema/mule/oauth2-provider/current/mule-oauth2-provider.xsd ``` 次の例は、​``​ XML ブロック内に名前空間ステートメントが配置される方法を示しています。 ```xml ``` ## [](#pom-ファイルの連動関係の追加)POM ファイルの連動関係の追加 Apache Maven ​`pom.xml`​ ファイルは Anypoint Studio によって生成され、Mule アプリケーションの連動関係が含まれます。Mule アプリケーションを手動でコーディングする場合、次の XML スニペットを ​`pom.xml`​ ファイルに含めてこのコネクタにアクセスできるようにします: ```xml com.mulesoft.modules mule-oauth2-provider-module x.x.x mule-plugin ``` `x.x.x`​ を使用しているコネクタに対応するバージョンに置き換えます。 最新の ​`pom.xml`​ ファイル情報を取得する手順は、次のとおりです。 1. [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ に移動します。 2. Exchange で、​**\[Login (ログイン)\]**​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。 3. Exchange で、「​``​」を検索します。 4. コネクタを選択します。 5. 画面の右上付近にある ​**\[Dependency Snippets (連動関係スニペット)\]**​ をクリックします。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module の XML および Maven サポート XML で Mule アプリケーションを手動でコーディングすることもできますが、Anypoint Studio を使用した方が効率的です。 Anypoint Studio の XML エディターまたはテキストエディターから Mule Runtime Engine (Mule) アプリケーションを手動でコーディングする場合、参照ステートメントを XML Mule フローと Apache Maven ​`pom.xml`​ ファイルの両方に追加することで、アプリケーションでコネクタにアクセスできます。 コネクタを Studio に追加すると、Studio は自動的に XML コードにコネクタの名前空間およびスキーマの場所を入力します。さらに、​`pom.xml`​ ファイルに連動関係を追加します。 ## [](#コネクタの名前空間の追加)コネクタの名前空間の追加 次のコードを設定 XML のヘッダーの ​``​ タグ内に貼り付けます。 ```xml http://www.mulesoft.org/schema/mule/oauth2-provider http://www.mulesoft.org/schema/mule/oauth2-provider/current/mule-oauth2-provider.xsd ``` 次の例は、​``​ XML ブロック内に名前空間ステートメントが配置される方法を示しています。 ```xml ``` ## [](#pom-ファイルの連動関係の追加)POM ファイルの連動関係の追加 Apache Maven ​`pom.xml`​ ファイルは Anypoint Studio によって生成され、Mule アプリケーションの連動関係が含まれます。Mule アプリケーションを手動でコーディングする場合、次の XML スニペットを ​`pom.xml`​ ファイルに含めてこのコネクタにアクセスできるようにします: ```xml com.mulesoft.modules mule-oauth2-provider-module x.x.x mule-plugin ``` `x.x.x`​ を使用しているコネクタに対応するバージョンに置き換えます。 最新の ​`pom.xml`​ ファイル情報を取得する手順は、次のとおりです。 1. [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ に移動します。 2. Exchange で、​**\[Login (ログイン)\]**​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。 3. Exchange で、「​``​」を検索します。 4. コネクタを選択します。 5. 画面の右上付近にある ​**\[Dependency Snippets (連動関係スニペット)\]**​ をクリックします。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module のトラブルシューティング OAuth2 Provider Module のトラブルシューティングを行うには、冗長ログの有効化と、一般的なスローメッセージの解釈に関する情報を理解しておきます。 ## [](#冗長ログの有効化)冗長ログの有効化 アプリケーションと OAuth2 Provider Module のやりとりが失敗する理由の理解を深めるには、モジュールの冗長ログを一時的に有効にします。 Mule アプリケーションのパフォーマンスに影響するため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。 設定ファイルで冗長ログを有効にする手順は、次のとおりです。 1. Anypoint Studio にアクセスし、​**\[Package Explorer\]**​ ビューに移動します。 2. アプリケーションのプロジェクト名を開きます。 3. `src/main/resources`​ パスフォルダーを開きます。 4. フォルダー内の ​`log4j2.xml`​ ファイルを開きます。 5. ``​ タグ内に ​``​ タグを追加します。 ```xml ... ... ``` 6. アプリケーションの変更を保存します。 7. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。 ## [](#一般的なスローを理解する)一般的なスローを理解する ここでは、スローされる一般的なメッセージとその解釈方法を示します。 - OAUTH2-PROVIDER:CLIENT\_ALREADY\_EXISTS 同じクライアント ID のクライアントがすでに存在し、​\*\[Fail If Present (存在する場合は失敗)\]\*​ 項目が ​\`true\`​ に設定されています。 - OAUTH2-PROVIDER:INVALID\_CONFIGURATION 指定したパラメーターが無効です。たとえば、​\`AUTHORIZATION\_CODE\`​ の ​\*\[Authorized Grant Types (認証済み許可種別)\]\*​ 項目にリダイレクト URI がありません。 - OAUTH2-PROVIDER:NO\_SUCH\_CLIENT 削除するクライアントが存在しません。 - OAUTH2-PROVIDER:INVALID\_TOKEN 失効させるトークンが無効です。 - OAUTH2-PROVIDER:TOKEN\_UNAUTHORIZED​ トークンが無効か、検証内で設定されていない項目があるか、間違った項目が設定されています。 - OAUTH2-PROVIDER:OAUTH\_SERVER\_SECURITY OAuth2 Provider Module では、原因を特定できない場合にこのエラーがスローされます。 ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module のトラブルシューティング OAuth2 Provider Module のトラブルシューティングを行うには、冗長ログの有効化と、一般的なスローメッセージの解釈に関する情報を理解しておきます。 ## [](#冗長ログの有効化)冗長ログの有効化 アプリケーションと OAuth2 Provider Module のやりとりが失敗する理由の理解を深めるには、モジュールの冗長ログを一時的に有効にします。 Mule アプリケーションのパフォーマンスに影響するため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。 設定ファイルで冗長ログを有効にする手順は、次のとおりです。 1. Anypoint Studio にアクセスし、​**\[Package Explorer\]**​ ビューに移動します。 2. アプリケーションのプロジェクト名を開きます。 3. `src/main/resources`​ パスフォルダーを開きます。 4. フォルダー内の ​`log4j2.xml`​ ファイルを開きます。 5. ``​ タグ内に ​``​ タグを追加します。 ```xml ... ... ``` 6. アプリケーションの変更を保存します。 7. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。 ## [](#一般的なスローを理解する)一般的なスローを理解する ここでは、スローされる一般的なメッセージとその解釈方法を示します。 - OAUTH2-PROVIDER:CLIENT\_ALREADY\_EXISTS 同じクライアント ID のクライアントがすでに存在し、​\*\[Fail If Present (存在する場合は失敗)\]\*​ 項目が ​\`true\`​ に設定されています。 - OAUTH2-PROVIDER:INVALID\_CONFIGURATION 指定したパラメーターが無効です。たとえば、​\`AUTHORIZATION\_CODE\`​ の ​\*\[Authorized Grant Types (認証済み許可種別)\]\*​ 項目にリダイレクト URI がありません。 - OAUTH2-PROVIDER:NO\_SUCH\_CLIENT 削除するクライアントが存在しません。 - OAUTH2-PROVIDER:INVALID\_TOKEN 失効させるトークンが無効です。 - OAUTH2-PROVIDER:TOKEN\_UNAUTHORIZED​ トークンが無効か、検証内で設定されていない項目があるか、間違った項目が設定されています。 - OAUTH2-PROVIDER:OAUTH\_SERVER\_SECURITY OAuth2 Provider Module では、原因を特定できない場合にこのエラーがスローされます。 ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) - [Known Issues](https://help.salesforce.com/s/issues) # OAuth2 Provider Module のトラブルシューティング OAuth2 Provider Module のトラブルシューティングを行うには、冗長ログの有効化と、一般的なスローメッセージの解釈に関する情報を理解しておきます。 ## [](#冗長ログの有効化)冗長ログの有効化 アプリケーションと OAuth2 Provider Module のやりとりが失敗する理由の理解を深めるには、モジュールの冗長ログを一時的に有効にします。 Mule アプリケーションのパフォーマンスに影響するため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。 設定ファイルで冗長ログを有効にする手順は、次のとおりです。 1. Anypoint Studio にアクセスし、​**\[Package Explorer\]**​ ビューに移動します。 2. アプリケーションのプロジェクト名を開きます。 3. `src/main/resources`​ パスフォルダーを開きます。 4. フォルダー内の ​`log4j2.xml`​ ファイルを開きます。 5. ``​ タグ内に ​``​ タグを追加します。 ```xml ... ... ``` 6. アプリケーションの変更を保存します。 7. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。 ## [](#一般的なスローを理解する)一般的なスローを理解する ここでは、スローされる一般的なメッセージとその解釈方法を示します。 - OAUTH2-PROVIDER:CLIENT\_ALREADY\_EXISTS 同じクライアント ID のクライアントがすでに存在し、​\*\[Fail If Present (存在する場合は失敗)\]\*​ 項目が ​\`true\`​ に設定されています。 - OAUTH2-PROVIDER:INVALID\_CONFIGURATION 指定したパラメーターが無効です。たとえば、​\`AUTHORIZATION\_CODE\`​ の ​\*\[Authorized Grant Types (認証済み許可種別)\]\*​ 項目にリダイレクト URI がありません。 - OAUTH2-PROVIDER:NO\_SUCH\_CLIENT 削除するクライアントが存在しません。 - OAUTH2-PROVIDER:INVALID\_TOKEN 失効させるトークンが無効です。 - OAUTH2-PROVIDER:TOKEN\_UNAUTHORIZED​ トークンが無効か、検証内で設定されていない項目があるか、間違った項目が設定されています。 - OAUTH2-PROVIDER:OAUTH\_SERVER\_SECURITY OAuth2 Provider Module では、原因を特定できない場合にこのエラーがスローされます。 ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) - [Known Issues](https://help.salesforce.com/s/issues) # OAuth2 Provider Module の例 OAuth2 Provider Module では、Mule Runtime Engine (Mule) アプリケーションを OAuth2 認証フレームワークの認証マネージャーとして設定できます。 このモジュールを使用して、アプリケーションは、クライアントの登録、登録済みのクライアントの認証、トークンの付与、トークンの検証、クライアントの削除を行うことができます。 次の例は、クライアントログイン情報を作成および検証する ​**Create client**​ および ​**Validate token**​ 操作の設定方法を示しています。 ![OAuth プロバイダーの Studio フロー](/mulesoft/current/ja-jp/oauth2-provider-module/1.0/_images/oauth2-provider-example.png) 1. Studio で、HTTP ​**\[Listener\]**​ 操作を Studio キャンバスにドラッグします。 2. **\[Path (パス)\]**​ を ​`/createClient`​ に設定します。 3. **\[Connector configuration (コネクタ設定)\]**​ を目的の HTTP 設定に設定します。 4. **\[Create client\]**​ 操作を HTTP ​**\[Listener\]**​ 操作の横にドラッグします。 5. **\[Module configuration (モジュール設定)\]**​ を目的の OAuth2 Provider Module 設定に設定します。 6. 次のパラメーターを設定します。 - **Client id (クライアント ID)**​: `attributes.headers.client_id` - **Type (種別)**​: `CONFIDENTIAL` - **Secret (シークレット)**​: `attributes.headers.client_secret` - **Client name (クライアント名)**​: `attributes.headers.client_name` - **Description (説明)**​: `""` - **Principal (プリンシパル)**​: `""` - **Redirect uri (リダイレクト URI)**​: `"demo.com"` - **Authorized grant types (認証済み許可種別)**​: `"CLIENT_CREDENTIALS"` 7. **\[Set Payload\]**​ コンポーネントを ​**\[Create client\]**​ 操作の横にドラッグします。 8. **\[Value (値)\]**​ を ​`Client Created`​ (クライアント作成済み) に設定します。 9. 新しい HTTP ​**\[Listener\]**​ ソースを新しいフローにドラッグします。 10. **\[Path (パス)\]**​ を ​`/validate`​ に設定します。 11. **\[Validate token\]**​ 操作を ​**\[Listener\]**​ ソースの横にドラッグします。 12. **\[Module configuration (モジュール設定)\]**​ を目的の OAuth2 Provider Module 設定に設定します。 13. **\[Access token (アクセストークン)\]**​ を ​`(attributes.headers['authorization'] splitBy ' ')[1]`​ に設定します。 14. **\[Transform Message\]**​ コンポーネントを ​**\[Validate token\]**​ 操作の横にドラッグします。 15. 出力表示に次の DataWeave コードを追加します。 ```dataweave %dw 2.0 output application/json --- { "Message": "Successfully validated" } ``` 16. Mule アプリケーションを保存して実行します。 ## [](#mule-アプリケーションのテスト)Mule アプリケーションのテスト Mule アプリケーションをテストするには、次のコマンドを実行します。 `[http://oauthtest01.us-e2.cloudhub.io/createClient](http://oauthtest01.us-e2.cloudhub.io/createClient)`​ メソッド: GET パラメーター: client\_id、client\_secret、client\_name たとえば、​`client_id = 123`​、​`client_secret = 1234`​、​`client_name = abc`​ の値で GET パラメーター項目を設定します。 次の結果が返されます。 ```xml { "Message": "Client Created" } ``` `[http://oauthtest01.us-e2.cloudhub.io/token](http://oauthtest01.us-e2.cloudhub.io/token)`​ メソッド: POST パラメーター: client\_id、client\_secret、grant\_type たとえば、​`client_id = 123`​、​`client_secret = 1234`​、​`grant_type = CLIENT_CREDENTIALS`​ の値で POST パラメーター項目を設定します。 次の結果が返されます。 ```xml {"access_token":"s143Barj7xpQP3_AGWvHRyZxFNEcgJ55XB1I3Yquj8kgem2qxqa5TpouLG3gQCr2sj170Ci1MqLd5gzF4AUpRQ", "token_type":"Bearer", "expires_in":86400} ``` 別のオプションとして、検証コマンドを実行します。 ​`[http://oauthtest01.us-e2.cloudhub.io/validate](http://oauthtest01.us-e2.cloudhub.io/validate)`​ メソッド: GET パラメーター: Authorization 1. 応答データから受け取った ​`token_type`​ (つまり、「Bearer」) を配置します。 2. スペースを追加します。 3. 応答データから受け取った ​`access_token`​ を追加します。 たとえば、Authorization が Bearer に等しいとします。 ```xml Bearer s143Barj7xpQP3_AGWvHRyZxFNEcgJ55XB1I3Yquj8kgem2qxqa5TpouLG3gQCr2sj170Ci1MqLd5gzF4AUpRQ ``` 次の結果が返されます。 ```xml { "Message": "Successfully validated" } ``` 応答が無効な場合、結果は次のようになります。 ```xml The token received: s143BarjxpQP3_AGWvHRyZxFNEcgJ55XB1I3Yquj8kgem2qxqa5TpouLG3gQCr2sj170Ci1MqLd5gzF4AUpRQ, is not valid. ``` ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module の例 OAuth2 Provider Module では、Mule Runtime Engine (Mule) アプリケーションを OAuth2 認証フレームワークの認証マネージャーとして設定できます。 このモジュールを使用して、アプリケーションは、クライアントの登録、登録済みのクライアントの認証、トークンの付与、トークンの検証、クライアントの削除を行うことができます。 次の例は、クライアントログイン情報を作成および検証する ​**Create client**​ および ​**Validate token**​ 操作の設定方法を示しています。 ![OAuth プロバイダーの Studio フロー](/mulesoft/current/ja-jp/oauth2-provider-module/1.1/_images/oauth2-provider-example.png) 1. Studio で、HTTP ​**\[Listener\]**​ 操作を Studio キャンバスにドラッグします。 2. **\[Path (パス)\]**​ を ​`/createClient`​ に設定します。 3. **\[Connector configuration (コネクタ設定)\]**​ を目的の HTTP 設定に設定します。 4. **\[Create client\]**​ 操作を HTTP ​**\[Listener\]**​ 操作の横にドラッグします。 5. **\[Module configuration (モジュール設定)\]**​ を目的の OAuth2 Provider Module 設定に設定します。 6. 次のパラメーターを設定します。 - **Client id (クライアント ID)**​: `attributes.headers.client_id` - **Type (種別)**​: `CONFIDENTIAL` - **Secret (シークレット)**​: `attributes.headers.client_secret` - **Client name (クライアント名)**​: `attributes.headers.client_name` - **Description (説明)**​: `""` - **Principal (プリンシパル)**​: `""` - **Redirect uri (リダイレクト URI)**​: `"demo.com"` - **Authorized grant types (認証済み許可種別)**​: `"CLIENT_CREDENTIALS"` 7. **\[Set Payload\]**​ コンポーネントを ​**\[Create client\]**​ 操作の横にドラッグします。 8. **\[Value (値)\]**​ を ​`Client Created`​ (クライアント作成済み) に設定します。 9. 新しい HTTP ​**\[Listener\]**​ ソースを新しいフローにドラッグします。 10. **\[Path (パス)\]**​ を ​`/validate`​ に設定します。 11. **\[Validate token\]**​ 操作を ​**\[Listener\]**​ ソースの横にドラッグします。 12. **\[Module configuration (モジュール設定)\]**​ を目的の OAuth2 Provider Module 設定に設定します。 13. **\[Access token (アクセストークン)\]**​ を ​`(attributes.headers['authorization'] splitBy ' ')[1]`​ に設定します。 14. **\[Transform Message\]**​ コンポーネントを ​**\[Validate token\]**​ 操作の横にドラッグします。 15. 出力表示に次の DataWeave コードを追加します。 ```dataweave %dw 2.0 output application/json --- { "Message": "Successfully validated" } ``` 16. Mule アプリケーションを保存して実行します。 ## [](#mule-アプリケーションのテスト)Mule アプリケーションのテスト Mule アプリケーションをテストするには、次のコマンドを実行します。 `[http://oauthtest01.us-e2.cloudhub.io/createClient](http://oauthtest01.us-e2.cloudhub.io/createClient)`​ メソッド: GET パラメーター: client\_id、client\_secret、client\_name たとえば、​`client_id = 123`​、​`client_secret = 1234`​、​`client_name = abc`​ の値で GET パラメーター項目を設定します。 次の結果が返されます。 ```xml { "Message": "Client Created" } ``` `[http://oauthtest01.us-e2.cloudhub.io/token](http://oauthtest01.us-e2.cloudhub.io/token)`​ メソッド: POST パラメーター: client\_id、client\_secret、grant\_type たとえば、​`client_id = 123`​、​`client_secret = 1234`​、​`grant_type = CLIENT_CREDENTIALS`​ の値で POST パラメーター項目を設定します。 次の結果が返されます。 ```xml {"access_token":"s143Barj7xpQP3_AGWvHRyZxFNEcgJ55XB1I3Yquj8kgem2qxqa5TpouLG3gQCr2sj170Ci1MqLd5gzF4AUpRQ", "token_type":"Bearer", "expires_in":86400} ``` 別のオプションとして、検証コマンドを実行します。 ​`[http://oauthtest01.us-e2.cloudhub.io/validate](http://oauthtest01.us-e2.cloudhub.io/validate)`​ メソッド: GET パラメーター: Authorization 1. 応答データから受け取った ​`token_type`​ (つまり、「Bearer」) を配置します。 2. スペースを追加します。 3. 応答データから受け取った ​`access_token`​ を追加します。 たとえば、Authorization が Bearer に等しいとします。 ```xml Bearer s143Barj7xpQP3_AGWvHRyZxFNEcgJ55XB1I3Yquj8kgem2qxqa5TpouLG3gQCr2sj170Ci1MqLd5gzF4AUpRQ ``` 次の結果が返されます。 ```xml { "Message": "Successfully validated" } ``` 応答が無効な場合、結果は次のようになります。 ```xml The token received: s143BarjxpQP3_AGWvHRyZxFNEcgJ55XB1I3Yquj8kgem2qxqa5TpouLG3gQCr2sj170Ci1MqLd5gzF4AUpRQ, is not valid. ``` ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module の例 OAuth2 Provider Module では、Mule Runtime Engine (Mule) アプリケーションを OAuth2 認証フレームワークの認証マネージャーとして設定できます。 このモジュールを使用して、アプリケーションは、クライアントの登録、登録済みのクライアントの認証、トークンの付与、トークンの検証、クライアントの削除を行うことができます。 次の例は、クライアントログイン情報を作成および検証する ​**Create client**​ および ​**Validate token**​ 操作の設定方法を示しています。 ![OAuth プロバイダーの Studio フロー](/mulesoft/current/ja-jp/oauth2-provider-module/latest/_images/oauth2-provider-example.png) 1. Studio で、HTTP ​**\[Listener\]**​ 操作を Studio キャンバスにドラッグします。 2. **\[Path (パス)\]**​ を ​`/createClient`​ に設定します。 3. **\[Connector configuration (コネクタ設定)\]**​ を目的の HTTP 設定に設定します。 4. **\[Create client\]**​ 操作を HTTP ​**\[Listener\]**​ 操作の横にドラッグします。 5. **\[Module configuration (モジュール設定)\]**​ を目的の OAuth2 Provider Module 設定に設定します。 6. 次のパラメーターを設定します。 - **Client id (クライアント ID)**​: `attributes.headers.client_id` - **型**​: `CONFIDENTIAL` - **Secret (シークレット)**​: `attributes.headers.client_secret` - **Client name (クライアント名)**​: `attributes.headers.client_name` - **Description (説明)**​: `""` - **Principal (プリンシパル)**​: `""` - **Redirect uri (リダイレクト URI)**​: `"demo.com"` - **Authorized grant types (認証済み許可種別)**​: `"CLIENT_CREDENTIALS"` 7. **\[Set Payload\]**​ コンポーネントを ​**\[Create client\]**​ 操作の横にドラッグします。 8. **\[Value (値)\]**​ を ​`Client Created`​ (クライアント作成済み) に設定します。 9. 新しい HTTP ​**\[Listener\]**​ ソースを新しいフローにドラッグします。 10. **\[Path (パス)\]**​ を ​`/validate`​ に設定します。 11. **\[Validate token\]**​ 操作を ​**\[Listener\]**​ ソースの横にドラッグします。 12. **\[Module configuration (モジュール設定)\]**​ を目的の OAuth2 Provider Module 設定に設定します。 13. **\[Access token (アクセストークン)\]**​ を ​`(attributes.headers['authorization'] splitBy ' ')[1]`​ に設定します。 14. **\[Transform Message\]**​ コンポーネントを ​**\[Validate token\]**​ 操作の横にドラッグします。 15. 出力表示に次の DataWeave コードを追加します。 ```dataweave %dw 2.0 output application/json --- { "Message": "Successfully validated" } ``` 16. Mule アプリケーションを保存して実行します。 ## [](#mule-アプリケーションのテスト)Mule アプリケーションのテスト Mule アプリケーションをテストするには、次のコマンドを実行します。 `[http://oauthtest01.us-e2.cloudhub.io/createClient](http://oauthtest01.us-e2.cloudhub.io/createClient)`​ メソッド: GET パラメーター: client\_id、client\_secret、client\_name たとえば、​`client_id = 123`​、​`client_secret = 1234`​、​`client_name = abc`​ の値で GET パラメーター項目を設定します。 次の結果が返されます。 ```xml { "Message": "Client Created" } ``` `[http://oauthtest01.us-e2.cloudhub.io/token](http://oauthtest01.us-e2.cloudhub.io/token)`​ メソッド: POST パラメーター: client\_id、client\_secret、grant\_type たとえば、​`client_id = 123`​、​`client_secret = 1234`​、​`grant_type = CLIENT_CREDENTIALS`​ の値で POST パラメーター項目を設定します。 次の結果が返されます。 ```xml {"access_token":"s143Barj7xpQP3_AGWvHRyZxFNEcgJ55XB1I3Yquj8kgem2qxqa5TpouLG3gQCr2sj170Ci1MqLd5gzF4AUpRQ", "token_type":"Bearer", "expires_in":86400} ``` 別のオプションとして、検証コマンドを実行します。 ​`[http://oauthtest01.us-e2.cloudhub.io/validate](http://oauthtest01.us-e2.cloudhub.io/validate)`​ メソッド: GET パラメーター: Authorization 1. 応答データから受け取った ​`token_type`​ (つまり、「Bearer」) を配置します。 2. スペースを追加します。 3. 応答データから受け取った ​`access_token`​ を追加します。 たとえば、Authorization が Bearer に等しいとします。 ```xml Bearer s143Barj7xpQP3_AGWvHRyZxFNEcgJ55XB1I3Yquj8kgem2qxqa5TpouLG3gQCr2sj170Ci1MqLd5gzF4AUpRQ ``` 次の結果が返されます。 ```xml { "Message": "Successfully validated" } ``` 応答が無効な場合、結果は次のようになります。 ```xml The token received: s143BarjxpQP3_AGWvHRyZxFNEcgJ55XB1I3Yquj8kgem2qxqa5TpouLG3gQCr2sj170Ci1MqLd5gzF4AUpRQ, is not valid. ``` ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # OAuth2 Provider Module リファレンス OAuth2 Provider Module v1.0 OAuth2 Provider Module を使用すると、Mule Runtime Engine (Mule) アプリケーションを OAuth2 ダンスの認証マネージャーとして設定できます。 この役割を持つことで、アプリケーションは、既に登録済みのクライアントの認証、トークンの付与、トークンの検証、クライアントの登録と削除のすべてをフローの実行中に行うことができます。 ## [](#設定)設定 * * * ### [](#config)デフォルト設定 OAuth2 Provider Module 設定 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x

Provider Name (プロバイダー名)

String (文字列)

API の顧客に提供されるプロバイダー名。これは、OAuth2 API の一部の応答に使用されます。

リスナー設定

String (文字列)

トークンエンドポイントと認証エンドポイントを処理する HTTP リスナー設定の参照用の名前。

x

クライアント検証レートリミッター

特定の操作へのアクセスを制御するために使用されるレートリミッター。指定されていない場合、PeriodRateLimiter がデフォルトとして使用されます。

Client Store (クライアントストア)

Object Store (オブジェクトストア)

シークレットなどのクライアント設定情報を取得できるストア。クライアントストアが指定されていない場合は、デフォルトのメモリ内オブジェクトストアが設定されます。

Resource Owner Security Provider (リソースオーナーセキュリティプロバイダー)

String (文字列)

リソースオーナーを認証するために使用されるセキュリティプロバイダー。​CLIENT_CREDENTIALS​ 許可種別のみが使用される場合は不要です。Spring Module の例は、​「OAuth2 プロバイダーの移行」​を参照してください。

Client Security Provider (クライアントセキュリティプロバイダー)

String (文字列)

クライアントを認証するために使用されるセキュリティプロバイダー。公開クライアントまたは非公開クライアントとシークレットのみを使用する場合は不要です。

Token Generator Strategy (トークンジェネレーター戦略)

TokenGeneratorStrategy

アクセストークンを生成するために使用される戦略。TokenGeneratorStrategy を実装するクラスを参照する必要があります。

Supported Grant Types (サポートされる付与種別)

Enumeration (列挙)。次のいずれかになります。

  • AUTHORIZATION_CODE​

  • IMPLICIT

  • RESOURCE_OWNER_PASSWORD_CREDENTIALS​

  • CLIENT_CREDENTIALS​

このプロバイダーでサポートするカンマ区切りの許可種別。何も指定されていない場合、認証コード許可種別のみがサポートされます。

AUTHORIZATION_CODE

Scopes (スコープ)

String (文字列)

サポートされるスコープのカンマ区切りリスト。

Default Scopes (デフォルトスコープ)

String (文字列)

何も定義されていない場合にクライアントに設定されるデフォルトスコープのカンマ区切りリスト。

Token Config (トークン設定)

トークン関連の動作を設定するための情報。

Authorization Config (認証設定)

認証処理動作を設定するための情報

Clients (クライアント)

クライアントのリスト。

Expiration Policy (有効期限ポリシー)

動的設定インスタンスがアイドル状態を続けられる最小時間を設定します。この時間が経過すると、Mule Runtime で期限切れに相当するとみなされます。これは、インスタンスが有効期限の対象となった瞬間にプラットフォームでそのインスタンスが期限切れになるということではありません。必要に応じて、インスタンスがパージされます。

## [](#操作)操作 - [Create Client](#createClient) - [Delete Client](#deleteClient) - [Revoke Token](#revokeToken) - [Validate Token](#validateToken) ### [](#createClient)Create Client `` 新しいクライアントを作成して、設定したクライアントストアに保存します。 ```xml ``` #### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

トークン検証に使用するグローバルに定義された OAuth プロバイダーの名前。

x

Client Id (クライアント ID)

String (文字列)

作成されたクライアントに割り当てる ID。

x

Type (型)

Enumeration (列挙)。次のいずれかになります。

  • CONFIDENTIAL

  • PUBLIC

クライアントの種類。有効な値は、PUBLIC (公開) (クライアントはログイン情報の機密性を維持できない) または CONFIDENTIAL (機密) (クライアントはログイン情報の機密性を維持できる) です。

PUBLIC

Secret (シークレット)

String (文字列)

Client Name (クライアント名)

String (文字列)

クライアントのわかりやすい名前。

Description (説明)

String (文字列)

クライアントの簡単な説明。

Principal (プリンシパル)

String (文字列)

セキュリティプロバイダーで ID を使用できない場合に使用する省略可能なプリンシパル。

Redirect Uris (リダイレクト URI)

Array of String (文字列の配列)

クライアントが OAuth プロバイダーに要求を実行するときに使用されるリダイレクト URI のリストに解決される式。

Authorized Grant Types (認証済み許可種別)

Array of Enumeration (列挙の配列)。次のいずれかになります。

  • AUTHORIZATION_CODE​

  • REFRESH_TOKEN​

  • TOKEN

  • PASSWORD

  • CLIENT_CREDENTIALS

クライアントがトークンを要求するために使用できる認証済みの許可種別のリストに解決される式。

Scopes (スコープ)

Array of String (文字列の配列)

クライアントがサポートするスコープのリストに解決される式。何も指定しないと、​全般設定​ のデフォルトスコープが使用されます。

Fail If Present (存在する場合は失敗)

Boolean (ブール)

同じ ID のクライアントがすでに登録されている場合の処理を定義します。​true​ の場合、エラーが生じます。そうでない場合は、クライアントが更新されます。

false

### [](#次の設定の場合)次の設定の場合 [デフォルト設定](#config) #### [](#スロー)スロー - OAUTH2-PROVIDER:CLIENT\_ALREADY\_EXISTS​ - 同じクライアント ID のクライアントがすでに存在し、​**\[Fail If Present (存在する場合は失敗)\]**​ が ​`true`​ に設定されている場合。 - OAUTH2-PROVIDER:INVALID\_CONFIGURATION​ - 指定したパラメーターが有効でない場合。​**\[Authorized Grant Types (認証済み許可種別)\]**​ が ​AUTHORIZATION\_CODE​ だが、リダイレクト URI がないなど。 ### [](#deleteClient)Delete Client `` ストアからクライアントを削除します。 #### [](#パラメーター-3)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

トークン検証に使用するグローバルに定義された OAuth プロバイダーの名前。

x

Client Id (クライアント ID)

String (文字列)

削除するクライアントの ID。

x

### [](#次の設定の場合-2)次の設定の場合 [デフォルト設定](#config) #### [](#スロー-2)スロー OAUTH2-PROVIDER:NO\_SUCH\_CLIENT​ - 削除されるクライアントが存在しない。 ### [](#revokeToken)Revoke Token `` アクセストークンまたは更新トークンを失効させ、関連する更新トークンまたはアクセストークンも無効化します。クライアントログイン情報を検証する必要がある場合、トークンを失効させる前に validateClient ログイン情報を使用します。 #### [](#パラメーター-4)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

トークン検証に使用するグローバルに定義された OAuth プロバイダーの名前。

x

Token (トークン)

String (文字列)

失効させるトークン (アクセストークンまたは更新トークン)。

x

### [](#次の設定の場合-3)次の設定の場合 [デフォルト設定](#config) #### [](#スロー-3)スロー OAUTH2-PROVIDER:INVALID\_TOKEN​ - 失効させるトークンが有効でない。 ### [](#validateToken)Validate Token `` 有効なアクセストークンが指定されているかどうかをチェックします。指定したトークンが付与済みで有効な状態であることを検証します。また、定義されている場合は、トークンスコープやリソースオーナーロールが指定されたものと一致しているかどうかもチェックします。 指定したトークンが有効であれば、次の情報を含むペイロードが JSON として設定されます。 - expires\_in: トークンが無効とみなされるまでの残り時間 (秒)。 - scope: トークンに関連付けられたスコープ (スペース区切り)。 - client\_id: このトークンを要求したクライアントの ID。 - username: このトークンが要求されることを認証したリソースオーナーのユーザー名。 操作を実行する前にペイロードセットを保持するには、ペイロードを上書きせずに、​`target`​ および ​`targetValue`​ 属性を使用して、JSON 情報を変数に設定します。 Validate Token のパラメーターを次に示します。 #### [](#パラメーター-5)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Access Token (アクセストークン)

String (文字列)

#[(attributes.headers['authorization'] splitBy ' ')[1]]

Scopes (スコープ)

Array of String (文字列の配列)

トークンを検証するときに適用するスコープのリストに解決される式。

Resource Owner Roles (リソースオーナーロール)

Array of String (文字列の配列)

トークンを検証するときに適用するリソースオーナーロール。これは、トークンを検証するときに適用するリソースオーナーロールのリストに解決される式です。

Target Variable (対象変数)

String (文字列)

操作の出力を保存する変数の名前。

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。この式の結果が対象変数に保存されます。

#[payload]

#### [](#出力)出力

型

String (文字列)

### [](#次の設定の場合-4)次の設定の場合 [デフォルト設定](#config) #### [](#スロー-4)スロー OAUTH2-PROVIDER:TOKEN\_UNAUTHORIZED​ - 検証されるトークンが有効でない。 ## [](#型)型 ### [](#TokenConfig)トークンの設定 トークン処理とトークンエンドポイントに関連する設定です。
項目 型 説明 デフォルト値 必須

Path (パス)

String (文字列)

新しいトークンを要求するときにコールするエンドポイント。

/token

Token Store (トークンストア)

Object Store (オブジェクトストア)

トークン関連のデータを保存するための ObjectStore 設定情報。

Refresh Token Strategy (更新トークン戦略)

使用する更新トークン戦略。デフォルトでは、更新トークンは生成されません。

Token Ttl (トークン TTL)

Number (数値)

アクセストークンコードの有効期限が切れるまでの秒数。

86400

Token Ttl Time Unit (トークン TTL 時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

トークン TTL の時間単位。

SECONDS

### [](#AuthorizationConfig)Authorization Config (認証設定) 認証コード処理と認証エンドポイントに関連する設定です。
項目 型 説明 デフォルト値 必須

Login Page (ログインページ)

String (文字列)

リソースオーナーがログイン情報を提供するための Web ページへの相対ファイルパス。
デフォルトページを使用しない場合は、設定した HTML 内で参照される外部ファイルを処理する必要があります。それらは OAuth プロバイダーでは処理されません。
たとえば、ログインページの HTML が外部の ​.css​ スタイルファイルを参照する場合、そのファイルを提供するエンドポイントが存在する必要があります。​「HTTP Load Static Resource」​を参照してください。

www-static/auth.html

Path (パス)

String (文字列)

認証要求をリスンするための HTTP サーバーの認証エンドポイントへの URL の相対パス。

/authorize

Authorization Code Store (認証コードストア)

Object Store (オブジェクトストア)

グローバルに定義されたオブジェクトストアまたは非公開オブジェクトストアの定義への参照。生成された認証コードを保存するために使用されます。

エントリ TTL を 600 SECONDS (600 秒) に設定して ObjectStoreManager から作成された永続的なオブジェクトストア。

### [](#Client)Client (クライアント) トークンを要求する権限があるすべての登録済みクライアント。リストは、実行時に ​[Create Client](#createClient)​ 操作と ​[Delete Client](#deleteClient)​ 操作によって変更できます。 ```xml ``` 各登録済みクライアントには、次の情報が設定されたエントリがあります。
項目 型 説明 デフォルト値 必須

Client Id (クライアント ID)

String (文字列)

クライアントを参照するために使用される一意の ID。

x

Principal (プリンシパル)

String (文字列)

セキュリティプロバイダーで ID を使用できない場合に使用する省略可能なプリンシパル。一部のセキュリティプロバイダーではクライアントユーザー名に clientId を使用できません。そのような場合は、認証にクライアントのプリンシパルが使用されます。

Client Name (クライアント名)

String (文字列)

クライアントの名前。

Description (説明)

String (文字列)

クライアントの短い説明。

Secret (シークレット)

String (文字列)

クライアントを認証するために使用されるクライアントシークレット。​[Type (種別)]​ が CONFIDENTIAL の場合のみ必要です。

Client Redirect Uris (クライアントリダイレクト URI)

Array of String (文字列の配列)

要求の処理後にクライアントに応答するために使用する登録済みリダイレクト URI のリスト。

大部分の要求では、新しいリダイレクト URI を定義できるため、これらが常に考慮されるわけではありません。​「新しい値の処理」​も参照してください。

<oauth2-provider:client-scope value="USER"/>

Client Authorized Grant Types (クライアント認証済み許可種別)

Array of Enumeration (列挙の配列)。次のいずれかになります。

  • AUTHORIZATION_CODE​

  • REFRESH_TOKEN​

  • TOKEN

  • PASSWORD

  • CLIENT_CREDENTIALS

このクライアントがトークンを取得するために正常に実行できる OAuth フローを定義する許可種別。​「新しい値の処理」​も参照してください。

Client Scopes (クライアントスコープ)

Array of String (文字列の配列)

このクライアントに一致するスコープ。クライアント ID は一致するが、スコープが異なる要求を受信した場合、その要求は処理されません。​「新しい値の処理」​も参照してください。

Type (型)

Enumeration (列挙)。次のいずれかになります。

  • CONFIDENTIAL

  • PUBLIC

クライアント種別は、クライアントがそのログイン情報の機密性を維持できるかどうかを定義します。有効な値は、​PUBLIC​ (公開) (クライアントはログイン情報の機密性を維持できない) または ​CONFIDENTIAL​ (機密) (クライアントはログイン情報の機密性を維持できる) です。

PUBLIC

クライアントリダイレクト URI、クライアント認証済み許可種別、クライアントスコープの場合、新しい XML タグにそれぞれの新しい値を指定します。 `` `` ### [](#ExpirationPolicy)Expiration Policy (有効期限ポリシー)
項目 型 説明 デフォルト値 必須

Max Idle Time (最大アイドル時間)

Number (数値)

有効期限の対象とみなされるまで、動的設定インスタンスがアイドル状態を維持できる最大時間のスカラー時間値

Time Unit (時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

maxIdleTime 属性の時間単位

### [](#noRefreshToken)No Refresh Token (更新トークンなし) すべてのアクセストークンに更新トークンが付与されません。その結果、更新トークン要求を受信すると、それは常に拒否されます。
項目 型 説明 デフォルト値 必須

Token Generator Strategy (トークンジェネレーター戦略)

TokenGeneratorStrategy

### [](#singleRefreshToken)Single Refresh Token (単一更新トークン) 新しいアクセストークンが付与されるたびに、1 つの更新トークンがそれに関連付けられます。アクセストークンを更新するたびに同じ更新トークンを使用できます。
項目 型 説明 デフォルト値 必須

Object Store (オブジェクトストア)

Object Store (オブジェクトストア)

生成された更新トークンを保存するためのグローバルに定義されたオブジェクトストアまたは非公開オブジェクトストアの定義への参照。オブジェクトストアはアクセストークンオブジェクトスコアとは異なる必要があります。

エントリ TTL を 86400 SECONDS (86400 秒) に設定して ObjectStoreManager から作成された永続的なオブジェクトストア。

### [](#multipleRefreshTokens)Multiple Refresh Tokens (複数更新トークン) 更新トークン要求が実行されるたびに新しい更新トークンが生成されます。その後、以前の更新トークンは無効になります。
項目 型 説明 デフォルト値 必須

Object Store (オブジェクトストア)

Object Store (オブジェクトストア)

生成された更新トークンを保存するためのグローバルに定義されたオブジェクトストアまたは非公開オブジェクトストアの定義への参照。オブジェクトストアはアクセストークンオブジェクトスコアとは異なる必要があります。

エントリ TTL を 86400 SECONDS (86400 秒) に設定して ObjectStoreManager から作成された永続的なオブジェクトストア。

### [](#PeriodRateLimiter)Period Rate Limiter (期間レートリミッター) \[Period Rate Limiter (期間レートリミッター)\] では、期間に基づいてレート制限を処理します。 無効なログイン情報を使用している場合にクライアントが連続して検証することを防ぐメカニズムを設定できます。
項目 型 説明 デフォルト値 必須

Duration (所要時間)

Number (数値)

レートリミッターをリセットするまでに待機する時間。つまり、​duration (時間)​ の長さの間は、クライアント検証が失敗するたびに、それが失敗数に追加されます。

600

Duration Time Unit (期間の時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

SECONDS

Maximum Failure Count (最大失敗数)

Number (数値)

要求が先制的に拒否されるまでに、時間内に許容される最大失敗数。

5

## [](#oauth-ダンス)OAuth ダンス OAuth ダンスは HTTP を使用して実行されるため、OAuth2 プロバイダーは ​[Mule HTTP Connector](https://docs.mulesoft.com/http-connector/latest/)​ を使用します。 そのため、Mule アプリケーションには、OAuth2 プロバイダー設定の定義以外に、プロバイダーが使用する HTTP リスナー設定も必要です。 設定が完了すると、プロバイダーは次のように動作します。 認証コードとトークン要求をリスンするために 2 つの HTTP エンドポイントが OAuth2 定義に従って作成されます。これらは Mule アプリケーションとは独立して動作し、HTTP を使用して応答します。 プロバイダーはトークンが認証済みかどうかを確認する ​[Validate Token](#validateToken)​ 操作を定義します。この操作は、フローの任意の場所に追加して実行を制御することができます。トークンが認証済みであれば、フローはペイロードのトークン情報を設定して実行を続行し、認証済みでない場合は ​`TOKEN_UNAUTHORIZED`​ エラーが発生します。アプリケーションでトークン認証が必要な部分には、この操作を追加する必要があります。 ほとんどの場合、トークン検証は HTTP リスナーと併せて使用されるので、失敗した場合はリスナーの応答メカニズムによってエラーを処理し、リクエスターに適切に応答することができます。この種類のエラーを処理するために追加ロジックを追加することができます。 最後に、必要に応じてクライアントの追加または削除やトークンの取り消しを行う追加操作が提供されます。 ## [](#セキュリティプロバイダー)セキュリティプロバイダー [全般設定](#general-configuration)​で前述したように、アプリケーション内で 2 つのセキュリティプロバイダーを定義して、後で OAuth2 設定要素によって参照されるようにする必要があります。 これを実行する方法の 1 つは、Spring Framework を使用して両方のセキュリティプロバイダーを定義し、​[Spring Module](https://docs.mulesoft.com/spring-module/latest/)​ を使用して Mule セキュリティマネージャーにプロバイダーを追加することです。 ```xml ``` ## [](#general-configuration)全般設定 ```xml ``` ## [](#関連情報)関連情報 [MuleSoft ヘルプセンター](https://help.mulesoft.com)