Mule OAuth 2.0 プロバイダー

Mule OAuth 2.0 プロバイダーは、MuleSoft が開発した代替の OAuth 2.0 プロバイダーで、どの MuleSoft API プラットフォーム組織 (統合組織を含む) でも使用できます。

対応する組織のログイン情報を使用して、Mule OAuth 2.0 プロバイダーを API ゲートウェイ機能のあるランタイム (Mule Runtime Engine (Mule) 3.x、4.2.0、またはそれ以降など) にデプロイする必要があります。次のサードパーティ OAuth 2.0 プロバイダーがサポートされています。

  • PingFederate

  • OpenAM

  • Open ID Connect をサポートしている OAuth 2.0 プロバイダー

Mule OAuth 2.0 アクセストークン適用ポリシー​は、Mule OAuth 2.0 プロバイダーと連携するように設計されています。

Mule OAuth 2.0 プロバイダーのダウンロード

Mule OAuth 2.0 プロバイダーは Anypoint Exchange からダウンロードできます。

OAuth 2.0 ダンス

OAuth 2.0 プロバイダー、API、およびクライアントアプリケーションによって実行される認証は、RFC 6749 に準拠しています。この認証プロセスは ​OAuth 2.0 ダンス​と呼ばれます。

Mule OAuth 2.0 プロバイダーでは、すべての​許可種別​がサポートされています。Mule OAuth 2.0 アクセストークン適用ポリシーによって保護されているリソースへのアクセスを要求するエンティティは ​Client​ です。

エンドポイント

API 実装で次の Mule OAuth 2.0 プロバイダーエンドポイントをコールできます。

mule oauth provider
目的 デフォルトパス 説明

トークンの検証

/validate

トークンの有効性 (トークンの有効期限が切れていないか、トークンが失効していないか、トークンが偽物でないか) を検証するために使用します。複数の検証エンドポイントを定義し、それぞれで異なるスコープを適用できます。詳細は、「<Scopes>」を参照してください。

認証

/authorize

スクリプト言語を使用するブラウザーでクライアントが実行されている場合や、クライアントが Web サーバーである場合にトークンを取得するために使用します。

アクセス

/access_token

クライアントが Mule OAuth 2.0 プロバイダーと同じエンティティによって所有されている場合や、クライアントが保護されたリソースのオーナーと同じエンティティである場合に使用します。

トークンの失効

/revoke

[省略可能] 有効なトークンを失効させて、無効として表示します。

スコープの実装

OAuth 2.0 スコープ​を使用すると、OAuth によって保護されているリソースへのアクセスをさらに制限できます。​READ​、​WRITE​ などの語や、​CONTRACTOR​、​PUBLIC​、​EMPLOYEES_ONLY​ などの組織に固有の他の語を定義できます。

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

  • 有効なすべてのスコープを定義するユニバーサルセット定義 ​defaultScopes​。

    <oauth2-provider:config
      scopes="CONTRACTOR, PUBLIC_READ, EMPLOYEES_ONLY, WRITE"
      >
      ...
    </oauth2-provider:config>
  • すでに定義されているスコープの特定のサブセットを適用するための ​/validate​ 検証エンドポイント。

  • スペース区切りリストを指定してスコープを適用できる Mule OAuth 2.0 アクセストークン適用ポリシー。

    複数のスコープを指定すると、​AND​ ロジックが適用されます。検証されるトークンが、要求されたすべてのスコープに関連付けられている場合、ポリシーはトークンを正常に検証します。

Mule 4.2.x 以降のスコープの使用例:

...
    <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>
...

詳細は、​ Anypoint Platform 用 Mule OAuth 2.0 サーバー​を参照してください。

クライアントアプリケーションキャッシュ

Anypoint Platform に接続するときのエラーが原因で Mule OAuth 2.0 プロバイダーがダウンするのを避けるために、Mule OAuth クライアントストアは、トークンが要求される有効なクライアントアプリケーションをそれぞれキャッシュします。

使用可能な接続がないときにプロバイダーが新しいトークンを要求した場合 (滅多にない)、クライアントストアはキャッシュにフォールバックします。エントリの有効期限は 30 日 (デフォルト設定) で切れます。再起動や Anypoint Platform への接続の切断の場合に備えてサービスの可用性を確保するために、ローカルにキャッシュを保持するようにこの範囲を設定できます。

すでにトークンがクライアントストアにあるクライアントアプリケーションが、Anypoint Platform から削除された場合、クライアントストアは次のトークン要求時にキャッシュからそのクライアントを削除して、プラットフォームの状況を反映します。​Mule OAuth 2.0 アクセストークン適用ポリシー​には、正常に完了したトークンの検証の結果をキャッシュするメカニズムがあります。

クライアントアプリケーションキャッシュメカニズムのカスタマイズ

Mule 4.2.0 以降では、キャッシュメカニズムのデフォルト値をカスタマイズできます。このオブジェクトストアには 2 つの設定可能なプロパティがあります。

プロパティ名 定義

anypoint.oauth_provider.cache_persistence_enabled

キャッシュメカニズムをローカルで保持する必要があるかどうかを定義します。このプロパティが設定されていないか、解析できない場合、デフォルト値は ​true​ です。 キャッシュ保持によって、接続なしで Anypoint Platform へのクライアント認証が許可されます。

anypoint.oauth_provider.cache_ttl_days

各クライアントアプリケーションが OAuth サーバーによってキャッシュされる日数を表します。 この値には、任意の正の浮動小数点数を指定できます。デフォルト値は ​30​ (30 日) です。