OAMおよびIdPのフェデレーション・プロキシ
この記事では、フェデレーション・プロキシの概念と、ローカルでユーザーを認証するのではなく、SPになるようにIdPを簡単に構成し、別のリモートIdPに認証を委任する方法について説明します。
フェデレーション・プロキシは、通常、フェデレーション・ハブが次のように動作するときに使用されます。
-
SPパートナ用のIdP。IdPは、これらのSPとそれ自体の間のフェデレーション・トラストを集計します。
-
リモート IdPパートナーを持つSP
このアプローチには、次の利点があります。
-
信頼管理のオーバーヘッドの削減
-
フェデレーション・ハブに追加された新しいIdPパートナは、フェデレーション・ハブと統合されているすべてのSPパートナで自動的に使用可能になります
-
フェデレーション・ハブに追加された新しいSPパートナは、それぞれIdPパートナで定義する必要はありません
-
フェデレーション・ハブがIdPパートナへのフェデレーション・デプロイメントを非表示にする、階層化されたフェデレーション信頼モデルの提供
直接信頼モデル
このモデルでは、様々なフェデレーション・サーバーが相互に直接信頼し、プロキシとして機能する中間エンティティはありません。
このモデルにはフェデレーション・フローの複雑さが軽減されるという利点があります。これは、SSO操作に関係するサーバーは2つのみですが、パートナが同意しない膨大な管理オーバーヘッドを作成する欠点が生じる場合もあります。
世界中にオフィスがあるACME Corpというグローバル企業の例を考えてみましょう。会社の構造は、世界の異なる地域を表す3つの上位組織で構成され、各組織はセキュリティ・ドメインを担当しています。
- 北米および南米
- 欧州人
- アジア- アフリカ- 太平洋
各組織には独自のセキュリティ・ドメインがあり、これは次のことを意味します。
- 一連のリソース
- SSOサーバー
- フェデレーション・サーバー ある組織のエンティティは、別の組織のエンティティから独立しています。そのため、あるドメインで認証されても、別のドメインで認証が実行されるまで、そのドメイン内のリソースへのアクセスは許可されません。
ACME Corpは、一部のサービス・プロバイダ(サプライヤ、会議コール・サービスなどACME Corpが購入したサービス)およびWebexサービスとのフェデレーション契約を締結したいとします。
さまざまなACME Corp組織とSP間のフェデレーションを確立するには、各組織のフェデレーション サーバが各リモートSPとの信頼を確立する必要があります。
-
信託機関の数は高い必要があります
-
SPパートナーは、単一の顧客に関する多数のフェデレーション契約を締結すると、このような信頼の確立を拒否することがあります。
次の図は、設定する必要のある全ての契約を表しています。
このアプローチは、ACME Corpのインフラストラクチャの内部的な複雑性をパートナに公開するため、通常は回避されます。
フェデレーションSSOとSAMLは、2つの異なるセキュリティ・ドメインが、一方のパートナが他方のパートナのセキュリティの実装とデプロイメントについて知る必要がない方法で、クロス・ドメインSSOを実行できるように定義されています。この場合、この約束は破られ、ACME Corpのセキュリティ選択の複雑さがSPパートナーに影響していることは明らかになります。
ブローカ・トラスト・モデル
このモデルでは、フェデレーション・プロキシの概念があり、一部のエンティティをプロキシ/SPとして使用して、他のSPのかわりにフェデレーションSSO操作を実行する必要があります。
ACME Corpの例を再度取り上げると、他のSPパートナとのフェデレーションSSOを実装するための正しいアプローチは、ブローカ・トラスト・モデルまたはフェデレーション・プロキシを介して行われます。ここでは:
-
新しいサーバーがフェデレーション・ハブとして機能するACME Corpにインストールされます
-
フェデレーション・ハブは、ACME Corpの内部IdPsに対するサービス・プロバイダとして機能します
-
フェデレーション・ハブは、外部SP(サプライヤ、会議コールおよびwebex)に対するIdPとして機能します
-
フェデレーションSSO操作中は、ユーザーが直接チャレンジするのではなく、ハブはSPとして機能し、リモート内部IdPを使用してフェデレーションSSO操作をトリガーします
このアプローチは、フェデレーション/SAMLの哲学とより合致しており、外部パートナはACME Corpのセキュリティ・インフラストラクチャおよびコンポーネントを認識せず、単一のIdPとのみ相互作用します。
また、このソリューションでは、契約数が特に多く、契約の更新が長いプロセスであった場合に、高い管理オーバーヘッドが解決されます。このアプローチでは:
-
フェデレーション契約は、ハブと内部IdPsの間、およびハブと外部SPの間です。
-
内部IdPを追加すると、外部SPには表示されません
-
外部SPを追加すると、内部IdPsには表示されません。
-
フェデレーション契約の更新(キー・ロールオーバーなど)は、複数回繰り返されるのではなく、1回のみの操作になります
次の図は、ブローカ・トラスト(またはフェデレーション・プロキシ)モデルで必要なフェデレーション契約を表しています。
OAMのフェデレーション・プロキシ
フェデレーション・プロキシの目標は、IdPをSPに変換して、最初のリモートSPからSSOリクエストを受信すると、IdPがSPになり、2番目のリモートIdPで新しいフェデレーションSSO操作がトリガーされるようにすることです。
2番目のフェデレーションSSO操作が正常に完了すると、プロキシIdPによってユーザーが識別され、元のSPに対してSSOレスポンスを作成できます。
OAMは、すべてのプロトコルでフェデレーション・プロキシを今すぐサポートします。
-
SAML 2.0、SAML 1.1およびOpenID 2.0
-
元のSPとIdP間のプロトコルは、OAM/SPと2番目のリモートIdP間で使用されるプロトコルと同じです。
-
元のSPとIdP間のプロトコルは、OAM/SPと2番目のリモートIdP間で使用されるプロトコルとは異なります。
したがって、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を起動する必要があります。そこから:
-
OAMはOAM/SPを起動し、2つ目のリモートIdPを使用して新しいフェデレーションSSOをトリガーします。
-
2番目のリモートIdPは、必要に応じてユーザーを認証し、SSOレスポンスを発行します。
-
OAM/SPはSSO応答を検証し、OAMセッションを作成します。
-
OAMがユーザーをIdPにリダイレクトします
-
IdPはSSOレスポンスを作成し、そのレスポンスを使用してユーザーを元のSPにリダイレクトします
WLSTコマンド
フェデレーションSSOを使用してローカル認証メカニズムのかわりにユーザーを認証するようにIdPを構成するには、次のいずれかのコマンドを実行します:
-
setIdPDefaultScheme()
: グローバル・デフォルト・スキームをフェデレーション・スキームに設定します -
setSPPartnerProfileDefaultScheme()
: SPパートナ・プロファイルのデフォルト・スキームを設定します -
setSPPartnerDefaultScheme()
: SPパートナにデフォルト・スキームを設定します。
認証用にOAMを構成する方法の詳細は、IdPの認証に関する記事を参照してください。この例では、フェデレーションSSOをデフォルトの認証メカニズムとして使用するようにIdPをグローバルに構成します。
-
$IAM_ORACLE_HOME/common/bin/WLST.sh
を実行して、WLST環境を入力します。 -
WLS管理サーバー(
connect()
)に接続します。 -
「ドメイン・ランタイム」ブランチ
domainRuntime()
に移動します。 -
setIdPDefaultScheme()
コマンドsetIdPDefaultScheme("FederationScheme")
を実行します。 -
WLST環境
exit()
を終了します。
この変更では、FederationScheme
を使用してユーザーを認証します。
他のフェデレーション・スキームを使用してユーザーを認証でき、OAMはグローバル・レベル(すべてのSPのすべてのユーザーがそのフェデレーション・スキームを使用して認証されます)またはSPパートナ・レベル(その特定のSPでフェデレーションSSOを実行するすべてのユーザーは、そのフェデレーション・スキームを使用して認証されます)で構成されます。特定のIdPのフェデレーション・スキームは、OAM WLSTのcreateAuthnSchemeAndModule
コマンドまたはOAM管理コンソールのIdPパートナの編集セクションを使用して作成できます。
使用する2番目のIdPの決定
OAMでフェデレーション・スキームを認証に使用する場合、OAM/SPはフェデレーションSSO操作に使用するIdPを決定する必要があります。
-
スキームがIdPパートナ・エントリから作成されたものであった場合、OAM/SPにそのIdPでフェデレーションSSOを実行するよう指示します。
-
スキームが
FederationScheme
の場合、OAM/SPはまずIdP検出サービスを使用するように構成されているかどうかを評価します。 -
IdP検出サービス用に構成されている場合、OAM/SPはユーザーをそのサービスにリダイレクトしてIdPを選択します。
-
それ以外の場合、OAM/SPはデフォルトのSSO IdPを使用します。
IdPパートナをデフォルトSSO IdPとして設定するには:
-
OAM管理コンソールでIdPパートナに移動し、「デフォルトのアイデンティティ・プロバイダ・パートナ」ボックスにチェックマークを付けます
-
または、IdPパートナ名を指定して、OAM WLSTのsetDefaultSSOIdPPartner()コマンドを使用します。
プロキシ・フェデレーション認証メソッド
前の記事で説明したように、IdPがアサーションを構成すると、ユーザーの認証に使用されるローカルOAMスキームがフェデレーション認証メソッドにマップされます。
フェデレーションSSOプロキシが「今すぐ」の場合、つまりFederationScheme
がフェデレーション認証メソッドにマップされます。たとえば、SAML 2.0のスキームをurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
にマップする必要がある場合、管理者は次のようなコマンドを使用します。
-
SPパートナ・プロファイル・レベルでマッピングを作成するには:
addSPPartnerProfileAuthnMethod("saml20-sppartner-profile","urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", "FederationScheme")
-
SPパートナ・レベルでマッピングを作成するには:
addSPPartnerAuthnMethod("AcmeSP","urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport ", "FederationScheme")
場合によっては、フェデレーション・スキームをローカルにフェデレーション認証メソッドにマップするかわりに、2番目のIdPから受信したフェデレーション認証メソッドを転送することをお薦めします。
フェデレーションSSOプロキシでフェデレーション認証メソッドを転送するようにIdPを構成するには:
ここで、useProxiedFedAuthnMethod()
コマンドを使用します:
-
$IAM_ORACLE_HOME/common/bin/WLST.sh
を実行して、WLST環境を入力します。 -
WLS管理サーバー(
connect()
)に接続します。 -
「ドメイン・ランタイム」ブランチ
domainRuntime()
に移動します。 -
useProxiedFedAuthnMethod()
コマンドuseProxiedFedAuthnMethod(enabled="true/false",authnSchemeToAdd="SCHEME", authnSchemeToRemove="SCHEME")
を実行します。 -
有効なパラメータは、フェデレーションSSOプロキシでフェデレーション認証メソッドを今すぐ転送するようにIdPを構成する必要があるかどうかを示します
-
authnSchemeToAdd
パラメータは、どのOAM認証スキームがフェデレーション・スキームであるかを示します。これにより、IdPは、ユーザーのセッションの認証スキームに基づいて、キャッシュされたフェデレーション認証メソッドを使用するかどうかを決定できます。 -
authnSchemeToRemove
パラメータは、IdPがプロキシされたフェデレーション認証メソッドを使用するフェデレーション・スキームとマークされたスキームのリストから、OAM認証スキームを削除します -
例:
useProxiedFedAuthnMethod(enabled="true", authnSchemeToAdd="FederationScheme")
- WLST環境
exit()
を終了します。
その他の学習リソース
docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Federation Proxy in OAM and IdP
F60446-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.