OpenAM OAuth 2.0 トークン適用ポリシー

ポリシー名

OpenAM OAuth 2.0 トークン適用

概要

承認されたクライアントアプリケーションへのアクセスのみを許可する

カテゴリ

セキュリティ

使用可能な最小 Mule バージョン

v3.8.0

返される状況コード

400 - 無効なトークン

401 - 未承認または認証サーバーへの接続時に接続エラー

403 - アクセス拒否、無効なクライアントアプリケーションログイン情報

500 - 認証サーバーからの不正応答、または WSDL SOAP 失敗エラー。

このポリシーは、OpenAM をクライアント管理ソリューションとして使用するように設定された統合組織でのみ使用できます。

概要

OpenAM OAuth 2.0 トークン適用ポリシーでは、HTTP 要求で指定されたトークンが有効で、必要に応じて、要求された OAuth スコープが完了している場合にのみ、その HTTP 要求を許可することで、保護されたリソースへのアクセスが制限されます。 ポリシーは、OAuth 認証サーバーに接続してトークンを検証します。トークンは、​OAuth ダンス​の実行時に、​認証されたクライアントアプリケーション​のログイン情報を指定することで取得されます。

このポリシーを適用する前に、​前提条件​をよく理解しておいてください。

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

Flex Gateway のローカルモード

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

Flex Gateway の接続モード

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

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

OpenAM は 2 種類の OAuth クライアントをサポートしています。

  • 機密クライアントは、ログイン情報を機密に保ちます。次の許可種別が含まれます。

    • クライアントログイン情報

    • 暗黙的

    • リソースオーナー

  • 公開クライアントは、ログイン情報を他の関係者と共有します。次の許可種別が含まれます。

    • 認証コード

    • 暗黙的

    • リソースオーナー

どちらの種類のクライアントも、RFC で定義されている 4 つの OAuth 許可種別のうち 3 つをサポートしています。このため、OpenAM クライアントの設定時には、4 つの許可種別のうち 3 つのみ選択できます。残りの許可種別は、もう一方のクライアントに属しているため使用できません。選択した許可種別に応じて、OpenAM クライアントのプロパティを公開または機密のどちらにするかを決定します。

Performance (パフォーマンス)

パフォーマンス向上のために、トークンが検証されると、デフォルトでは、システムによってトークンが有効期限までキャッシュされます。たとえば、トークンが失効するシナリオを考慮するときなど、このキャッシュメカニズムの制限や無効化が必要になる場合があります。

トークンキャッシュ時間 (OAuth プロバイダーに対して検証を再試行するまでのトークンキャッシュ時間) を制御する場合、次のプロパティを指定できます。

anypoint.platform.max_federation_expiration_time=<a number equal or greater than 0>

プロキシを介した OAuth プロバイダーへの接続

OpenAM OAuth 2.0 トークン適用ポリシーが Gateway プロキシ設定を使用できるようにするには、次のプロパティを指定します。

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

上記のプロパティを true に設定すると、ポリシーがランタイムプロキシ設定を使用します (指定されている場合)。次に例を示します。

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

OAuth プロバイダー情報の利用

トークンが OAuth プロバイダーによって正常に検証されると、プロバイダーはトークン検証を要求したポリシーに、OpenAM 側で設定可能な項目を含む追加の情報を返送します。

認証サーバーからのトークン検証応答:

{
    "uid":"john.doe",
    "mail":"john.doe@example.com",
    "scope":["uid","mail","cn","givenName"],
    "grant_type":"password",
    "cn":"John Doe",
    "realm":"/",
    "token_type":"Bearer",
    "expires_in":3600,
    "givenName":"John",
    "access_token":"fa017a0e-1bd5-214c-b19d-03efe9f9847e"
}

OAuth プロバイダーから返された項目はポリシーで処理され、さらに次のように処理されます。

  • 項目ごとに、元の保護されたリソースへの要求が「​X-AGW-​ + キー = 値」形式の HTTP ヘッダーで強化されます。

    • [Mule 4] ポリシー設定の一部として、[Expose Headers (ヘッダーを公開)] をオフにすることもできます。その場合、要求は ​X-AGW​ ヘッダーで強化​されません​。

  • フロー内の以降の処理では、プロバイダーからの元の解析していない応答を使用できます。

    • [Mule 3] フロー変数 ​['_agwUser']​ がセットアップされます。マップ内の特定の値にアクセスするには、MEL 式を使用して直接指定します。次に例を示します。

      #[flowVars['_agwUser']['mail']]
    • [Mule 4] 情報は ​authentication​ オブジェクトに保存されます。mail (メール) 項目が返されるとすると、その値には次の DataWeave 2.0 式を使用してアクセスできます。

      #[authentication.properties.userProperties.mail]
追加情報を使用してビジネスロジックをさらに調整できます。