OpenAM OAuth 2.0 トークン適用

ポリシー名

OpenAM OAuth 2.0 トークン適用

概要

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

カテゴリ

セキュリティ

最小 Mule バージョン

3.8.0

返される状況コード

400 - 無効なトークン

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

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

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

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

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

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

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

サポートされる許可種別

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

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

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

    • 暗黙的

    • リソース所有者

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

    • 認証コード

    • 暗黙的

    • リソース所有者

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

パフォーマンス

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

トークンキャッシュ時間 (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 プロバイダによって正常に検証されると、プロバイダはトークン検証を要求したポリシーに、PingFederate 側で設定可能な項目を含む追加の情報を返送します。

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

{
    "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]
追加情報を使用してビジネスロジックをさらに調整できます。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub