Mule OAuth 2.0 プロバイダ設定

Mule OAuth プロバイダを、外部プロバイダを使用する OAuth 2.0 アクセストークン適用ポリシーと一緒に実行するには、正しく指定された対応する組織のログイン情報を使用して OAuth プロバイダを API Gateway 機能のあるランタイム (Mule Runtime エンジン v3.8.0 または API Gateway v2.x.x) にデプロイする必要があります。

OAuth プロバイダの取得

OAuth プロバイダは Exchange からダウンロードできます。
Exchangeで Anypoint Platform 用外部 OAuth 2.0 サーバアセットを参照してダウンロードしてください。

Mule 4 でこのプロバイダを使用する場合は、​「OAuth2 プロバイダモジュールリファレンス」​を参照してください。

エンドポイントパスの設定

このプロバイダでは、次の 3 つの主要なエンドポイントパスを定義する必要があります。

デフォルトパス:

パス 説明

/validate

トークンの有効性を検証します。

複数の検証エンドポイントを定義し、それぞれで異なるスコープを適用できます。詳細は、​<<「スコープの設定」>>​を参照してください。

/authorize

/access_token​ のコール時に実際のトークンによって交換される 1 回限り使用可能なコードを指定します。

/access_token

OAuth 2.0 トークンを返します。

スコープの設定

OAuth 2.0 スコープは、OAuth によって保護されているリソースへのアクセスをさらに制限する手段です。​READ​、​WRITE​ のような語や、組織のコンテキストで意味のあるその他の語 (例: ​CONTRACTOR​、​PUBLIC​、​EMPLOYEES_ONLY​ など) を定義できます。

スコープは 3 つの異なる場所に定義できます。

  • スコープをユニバーサルセット ​defaultScopes​ に定義できます。この場合、有効なすべてのスコープを定義できます。

  • 検証エンドポイント ​/validate​ を設定して、すでに定義されているスコープの特定のサブセットを適用することもできます。

  • または、ポリシー自体にスペース区切りのリストを指定して、スコープを適用できます。
    次に例を示します。

    <oauth2-provider:config
      scopes="CONTRACTOR, PUBLIC_READ, EMPLOYEES_ONLY, WRITE"
      >
      ...
    </oauth2-provider:config>

概念をまとめた例

...
    <oauth2-provider:config name="external-oauth2-provider"
    							resourceOwnerSecurityProvider="resourceOwnerSecurityProvider"
    							clientSecurityProvider="clientSecurityProvider"
    							supportedGrantTypes="AUTHORIZATION_CODE,IMPLICIT,RESOURCE_OWNER_PASSWORD_CREDENTIALS,CLIENT_CREDENTIALS"
    							listenerConfig="https.listener"
    							scopes="CONTRACTOR, PUBLIC_READ, EMPLOYEES_ONLY, WRITE"
                                defaultScopes="CONTRACTOR, PUBLIC_READ, EMPLOYEES_ONLY, WRITE"
                                clientStore="clientObjectStore">
    		<oauth2-provider:token-config path="/access-token" tokenTtl="5" tokenTtlTimeUnit="SECONDS" tokenStore="tokenObjectStore">
                <oauth2-provider:refresh-token-strategy>
                    <oauth2-provider:single-refresh-token objectStore="refreshTokenObjectStore"/>
                </oauth2-provider:refresh-token-strategy>
            </oauth2-provider:token-config>
    		<oauth2-provider:authorization-config path="/authorize" authorizationCodeStore="authorizationCodeObjectStore"/>
    	</oauth2-provider:config>

        <flow name="validateToken">
            <http:listener path="/validate" config-ref="https.listener"/>
            <oauth2-provider:validate-token scopes="#[['PUBLIC_READ']]" config-ref="external-oauth2-provider" accessToken="#[attributes.queryParams.access_token]"/>
            <error-handler>
                <on-error-continue type="OAUTH2-PROVIDER:TOKEN_UNAUTHORIZED">
                    <set-payload value="UNAUTHORIZED_TOKEN"/>
                </on-error-continue>
            </error-handler>
        </flow>
...

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub