OAMおよびIdPのフェデレーション・プロキシ

この記事では、フェデレーション・プロキシの概念と、ローカルでユーザーを認証するのではなく、SPになるようにIdPを簡単に構成し、別のリモートIdPに認証を委任する方法について説明します。

フェデレーション・プロキシは、通常、フェデレーション・ハブが次のように動作するときに使用されます。

このアプローチには、次の利点があります。

直接信頼モデル

このモデルでは、様々なフェデレーション・サーバーが相互に直接信頼し、プロキシとして機能する中間エンティティはありません。

このモデルにはフェデレーション・フローの複雑さが軽減されるという利点があります。これは、SSO操作に関係するサーバーは2つのみですが、パートナが同意しない膨大な管理オーバーヘッドを作成する欠点が生じる場合もあります。

世界中にオフィスがあるACME Corpというグローバル企業の例を考えてみましょう。会社の構造は、世界の異なる地域を表す3つの上位組織で構成され、各組織はセキュリティ・ドメインを担当しています。

各組織には独自のセキュリティ・ドメインがあり、これは次のことを意味します。

ACME Corpは、一部のサービス・プロバイダ(サプライヤ、会議コール・サービスなどACME Corpが購入したサービス)およびWebexサービスとのフェデレーション契約を締結したいとします。

さまざまなACME Corp組織とSP間のフェデレーションを確立するには、各組織のフェデレーション サーバが各リモートSPとの信頼を確立する必要があります。

次の図は、設定する必要のある全ての契約を表しています。

図Direct_Trust_Model.jpgの説明

このアプローチは、ACME Corpのインフラストラクチャの内部的な複雑性をパートナに公開するため、通常は回避されます。

フェデレーションSSOとSAMLは、2つの異なるセキュリティ・ドメインが、一方のパートナが他方のパートナのセキュリティの実装とデプロイメントについて知る必要がない方法で、クロス・ドメインSSOを実行できるように定義されています。この場合、この約束は破られ、ACME Corpのセキュリティ選択の複雑さがSPパートナーに影響していることは明らかになります。

ブローカ・トラスト・モデル

このモデルでは、フェデレーション・プロキシの概念があり、一部のエンティティをプロキシ/SPとして使用して、他のSPのかわりにフェデレーションSSO操作を実行する必要があります。

ACME Corpの例を再度取り上げると、他のSPパートナとのフェデレーションSSOを実装するための正しいアプローチは、ブローカ・トラスト・モデルまたはフェデレーション・プロキシを介して行われます。ここでは:

このアプローチは、フェデレーション/SAMLの哲学とより合致しており、外部パートナはACME Corpのセキュリティ・インフラストラクチャおよびコンポーネントを認識せず、単一のIdPとのみ相互作用します。

また、このソリューションでは、契約数が特に多く、契約の更新が長いプロセスであった場合に、高い管理オーバーヘッドが解決されます。このアプローチでは:

次の図は、ブローカ・トラスト(またはフェデレーション・プロキシ)モデルで必要なフェデレーション契約を表しています。

図Brokered_Trust_Model.jpgの説明

OAMのフェデレーション・プロキシ

フェデレーション・プロキシの目標は、IdPをSPに変換して、最初のリモートSPからSSOリクエストを受信すると、IdPがSPになり、2番目のリモートIdPで新しいフェデレーションSSO操作がトリガーされるようにすることです。

2番目のフェデレーションSSO操作が正常に完了すると、プロキシIdPによってユーザーが識別され、元のSPに対してSSOレスポンスを作成できます。

OAMは、すべてのプロトコルでフェデレーション・プロキシを今すぐサポートします。

したがって、SPはSAML 1.1を介してIdPでフェデレーションSSOを実行でき、IdPはSPになり、SAML 2.0を介して2番目のリモートIdPでフェデレーションSSOを実行します。元のSPは、OAM/SPと2番目のIdP間で使用されるプロトコル、または2番目のフェデレーションSSO操作が実行されたプロトコルを認識する必要はありません。

フェデレーション・プロキシでは、IdPは、2番目のフェデレーションSSOで指定されたフェデレーション認証メソッドを元のSPに転送するように構成できます。

フェデレーション・プロキシ用のOAMの構成

前述のように、IdPはユーザー認証にOAMを利用します。フェデレーションSSO操作が実行されるたびに、IdPは認証スキームを指定してOAMを起動し、ユーザーが適切に認証されていることを確認し、必要に応じてチャレンジします。

すでに説明したように、OAMはOAM/SPに関連付けられた特定のスキームを定義します。認証されていないユーザーがFederationScheme (またはFederationPluginのような認証モジュールを使用するスキーム)によって保護されているリソースへのアクセスをリクエストした場合、OAMはOAM/SPを起動し、リモートのIdPを使用してフェデレーションSSO操作をトリガーします。

そのため、IdPでフェデレーション・プロキシを今すぐ実行するには、IdPでローカル認証スキームを使用してOAMを起動するかわりに、FederationSchemeを指定してIdPでOAMを起動する必要があります。そこから:

WLSTコマンド

フェデレーションSSOを使用してローカル認証メカニズムのかわりにユーザーを認証するようにIdPを構成するには、次のいずれかのコマンドを実行します:

認証用にOAMを構成する方法の詳細は、IdPの認証に関する記事を参照してください。この例では、フェデレーションSSOをデフォルトの認証メカニズムとして使用するようにIdPをグローバルに構成します。

  1. $IAM_ORACLE_HOME/common/bin/WLST.shを実行して、WLST環境を入力します。

  2. WLS管理サーバー(connect())に接続します。

  3. 「ドメイン・ランタイム」ブランチdomainRuntime()に移動します。

  4. setIdPDefaultScheme()コマンドsetIdPDefaultScheme("FederationScheme")を実行します。

  5. WLST環境exit()を終了します。

この変更では、FederationSchemeを使用してユーザーを認証します。

他のフェデレーション・スキームを使用してユーザーを認証でき、OAMはグローバル・レベル(すべてのSPのすべてのユーザーがそのフェデレーション・スキームを使用して認証されます)またはSPパートナ・レベル(その特定のSPでフェデレーションSSOを実行するすべてのユーザーは、そのフェデレーション・スキームを使用して認証されます)で構成されます。特定のIdPのフェデレーション・スキームは、OAM WLSTのcreateAuthnSchemeAndModuleコマンドまたはOAM管理コンソールのIdPパートナの編集セクションを使用して作成できます。

使用する2番目のIdPの決定

OAMでフェデレーション・スキームを認証に使用する場合、OAM/SPはフェデレーションSSO操作に使用するIdPを決定する必要があります。

IdPパートナをデフォルトSSO IdPとして設定するには:

プロキシ・フェデレーション認証メソッド

前の記事で説明したように、IdPがアサーションを構成すると、ユーザーの認証に使用されるローカルOAMスキームがフェデレーション認証メソッドにマップされます。

フェデレーションSSOプロキシが「今すぐ」の場合、つまりFederationSchemeがフェデレーション認証メソッドにマップされます。たとえば、SAML 2.0のスキームをurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportにマップする必要がある場合、管理者は次のようなコマンドを使用します。

場合によっては、フェデレーション・スキームをローカルにフェデレーション認証メソッドにマップするかわりに、2番目のIdPから受信したフェデレーション認証メソッドを転送することをお薦めします。

フェデレーションSSOプロキシでフェデレーション認証メソッドを転送するようにIdPを構成するには:

ここで、useProxiedFedAuthnMethod()コマンドを使用します:

  1. $IAM_ORACLE_HOME/common/bin/WLST.shを実行して、WLST環境を入力します。

  2. WLS管理サーバー(connect())に接続します。

  3. 「ドメイン・ランタイム」ブランチdomainRuntime()に移動します。

  4. useProxiedFedAuthnMethod()コマンドuseProxiedFedAuthnMethod(enabled="true/false",authnSchemeToAdd="SCHEME", authnSchemeToRemove="SCHEME")を実行します。

  5. WLST環境exit()を終了します。

その他の学習リソース

docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。