フェデレーションSSOに使用するIdPの決定

サービス・プロバイダとして、フェデレーションSSO操作をトリガーする場合、SPに複数のIdPsの信頼契約がある場合、SSOフローにどのIdPが選択されるかを決定することが主な課題となる場合があります。

OAM/SPには、フェデレーションSSO操作に対してIdPを選択するメカニズムが異なります。次に例を示します。

次のセクションでは、各メカニズムについて詳しく説明します。

OAMフェデレーション・スキーム

OAMには、次のようなOAM認証スキームを作成するための管理ツールが用意されています。

リソースがその種類の認証スキームで保護されている場合、非認証ユーザーがアクセスをリクエストすると、スキームがバインドされているIdPパートナを使用してフェデレーションSSOフローがトリガーされます。

このようなスキームを作成すると、管理者は特定のリソースを持つことができ、その結果、特定のIdPパートナとのフェデレーションSSOになります。

ノート: レベルが十分な有効なセッションでユーザーがすでに認証されている場合、他のフェデレーション・スキームによって保護されているリソースにアクセスすると、新しいフェデレーションSSOが生成されないことがあります。

OAM管理コンソール

特定のIdPパートナのOAM認証スキームを作成するには、次のステップを実行します。

  1. OAM管理コンソール(http(s)://OAM-admin-host:OAM-adminport/oamconsole)に移動します。

  2. 「アイデンティティ・フェデレーション」、「サービス・プロバイダ管理」に移動します。

  3. スキームを作成するIdPパートナを開きます。

  4. 「認証スキームおよびモジュールの作成」ボタンをクリックします。

図OAM_Admin_Console.jpgの説明

OAM管理コンソールによって、次のものが作成されます。

図OAM_Admin_Console_with_message.jpgの説明

WLSTコマンド

OAM WLSTのcreateAuthnSchemeAndModule()コマンドを使用して特定のIdPパートナのOAM認証スキームを作成するには、次のステップを実行します。

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

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

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

  4. createAuthnSchemeAndModule()コマンドを実行します: IdPパートナ名を指定します。例: createAuthnSchemeAndModule("AcmeIdP")

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

ノート: このようなフェデレーション・スキーム/モジュールを削除するには、OAM WLSTのdeleteAuthnSchemeAndModule()コマンドを実行します。

リソースの保護

特定のIdPパートナでフェデレーションSSOをトリガーする<PARTNER_NAME>FederationSchemeを使用してリソースを保護するには、次のステップを実行します。

  1. OAM管理コンソール(http(s)://OAM-admin-host:OAM-adminport/oamconsole)に移動します。

  2. 「アクセス・マネージャ」、「アプリケーション・ドメイン」にナビゲートします。

  3. 「検索」をクリックし、新しいFederationSchemeで保護するリソースを含むアプリケーション・ドメインを開きます。

  4. 「認証ポリシー」タブをクリックします。

  5. 新しい認証ポリシーを作成するか、既存の認証ポリシーを編集します。

  6. 新しいFederationSchemeを選択します。

  7. 「適用」をクリックします。

図Authentication_Policies.jpgの説明

この変更を行った後、ユーザーがこの認証ポリシーによって保護されているリソースをリクエストし、ユーザーを認証する必要がある場合、特定のIdPパートナ(この例ではAcmeIdP)を使用してフェデレーションSSOが実行されます。

カスタムOAM認証プラグ

概要

OAM認証モジュールは次のとおりです。

OOTBフェデレーション認証モジュール(FederationPlugin)は、次の2つのプラグインで構成されています。

オーケストレーションは次の方法で確認できます。

  1. OAM管理コンソール(http(s)://OAM-admin-host:OAM-adminport/oamconsole)に移動します。

  2. 「アクセス・マネージャ」、「認証モジュール」にナビゲートします。

  3. FederationSchemeを開きます。

  4. 「ステップ」タブをクリックして、プラグインを表示します。

  5. 「ステップ・オーケストレーション」タブをクリックして、様々なプラグインと操作の開始に使用されるプラグイン間のオーケストレーションを確認します。

図Steps_Orchestration.jpgの説明

カスタム・プラグインの実装

カスタム・プラグインは、特定のフェデレーションSSO操作に使用するIdPを決定するOAMカスタム認証プラグイン・フレームワークに基づいて実装できます。

IdPパートナ名をAuthenticationContextに保存するコードは、次のようになります。

 public ExecutionStatus
 process(AuthenticationContext context)
 {
    ...
    CredentialParam param = new CredentialParam();
    param.setName("KEY_FEDIDP");
    param.setType("string");
    param.setValue(IDP_PARTNER_NAME);

 context.getCredential().addCredentialParam("KEY_FEDIDP", param);
    ...
    return ExecutionStatus.SUCCESS;
 }

プラグインの実装後:

最後に、新しいOAMスキーム(カスタム認証モジュール/プラグインを使用してフェデレーションSSO操作を実行する)を使用してリソースを保護できます。

ノート: OAM開発者ガイドのカスタム・プラグインの詳細を参照してください。

IdP検出サービス

概要

「アイデンティティ・プロバイダ検出サービス・プロトコルおよびプロファイル」SAML 2.0仕様では、SAML 2.0 SPがIdP選択をリモート・サービスに委任する方法を定義します。

フローはSAML 2.0仕様で説明されており、次のステップで構成されています。

OAM/SPの構成

任意のリモートIdP検出サービスを使用するようにOAM/SPを構成できます。OAMには、単純なIdP検出サービスが含まれており、これを使用してフェデレーションSSOを実行するIdPを選択できます。IdP検出サービスを使用するようにOAM/SPを構成するには、次のステップを実行します。

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

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

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

  4. OAM/SPを有効化/無効化して、IdP検出サービス: putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "true/false")を使用します。

    1. 有効にするには: putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "true")

    2. putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "false")を無効にするには

  5. リモートIdP検出サービスの場所をputStringProperty("/spglobal /idpdiscoveryserviceurl", "URL")に設定します。

  6. URLをサービスの場所に置き換えます。

    1. バンドルされた単純なIdP検出サービスの場合、URLを/oamfed/discovery.jspに置き換えます(これはこのプロパティのOOTB値です): putStringProperty("/spglobal /idpdiscoveryserviceurl", "/oamfed/discovery.jsp")

    2. リモート・サービスの例: putStringProperty("/spglobal /idpdiscoveryserviceurl", "http://sp.com/discovery")

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

バンドルされた単純なIdP検出サービスを使用するには、次のステップを実行します。

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

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

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

  4. バンドルされたIdP検出サービスputBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "true/false")を有効または無効にします。

    1. 有効にするには: putBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "true")

    2. putBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "false")を無効化します。

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

テスト

テスト環境では、次の3つのIdPsがあります。

OAM/SPは次のように構成されます。

ユーザーがFederationSchemeで保護されているリソースへのアクセスをリクエストすると、バンドルされた単純なIdP検出サービスによって、フェデレーションSSOを実行するためのIdPの選択がユーザーに求められます。

図Access_Manager.jpgの説明

デフォルトSSOアイデンティティ・プロバイダ

フェデレーションSSOに使用されるIdPを示すために前述のどのメソッドも使用されていない場合、OAM/SPはデフォルトSSOアイデンティティ・プロバイダとしてマークされたIdPパートナを使用します。

OAM管理コンソール

特定のIdPパートナがOAM管理コンソールを介してデフォルトのSSOアイデンティティ・プロバイダであることを示すには、次のステップを実行します。

  1. OAM管理コンソール(http(s)://OAM-admin-host:OAM-adminport/oamconsole)に移動します。

  2. 「アイデンティティ・フェデレーション」、「サービス・プロバイダ管理」に移動します。

  3. IdPパートナを開きます。

  4. 「デフォルトのアイデンティティ・プロバイダ・パートナ」ボックスにチェックマークを入れます。

  5. 「適用」をクリックします。

図Default_Identity_Provider.jpgの説明

WLSTコマンド

OAM WLSTのsetDefaultSSOIdPPartner()コマンドを使用して、特定のIdPパートナがデフォルトのSSOアイデンティティ・プロバイダであることを示すには、次のステップを実行します。

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

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

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

  4. setDefaultSSOIdPPartner()コマンドを実行します。

  5. IdPパートナ名を指定します。例: setDefaultSSOIdPPartner("AcmeIdP")

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

その他の学習リソース

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

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