プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Access Management管理者ガイド
11g リリース2 (11.1.2.3) for All Platforms
E61950-08
目次へ移動
目次

前
次

40.7 アイデンティティ・プロバイダ検出サービスの構成

アイデンティティ・プロバイダ検出は、SSOで使用するアイデンティティ・プロバイダを(多くの場合、ユーザーとの対話によって)選択するためのサービスです。

Identity Federationは、アイデンティティ・プロバイダ検出サービスを備えていませんが、SPが開始するSSOにおいて、SPへの認証リクエストでIdPが渡されなかった場合に、IdPを選択するサービスを使用できるようサポートしています。

IdP検出の詳細は、次の仕様を参照してください。

http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-idp-discovery-cs-01.pdf

Identity Federationがサービス・プロバイダとして動作している場合、パートナIdPのプロバイダIDが指定されずにSSO操作が開始された場合に、SSOを実行するアイデンティティ・プロバイダを選択するためのIdP検出サービスにユーザーをリダイレクトするよう構成できます。

ユーザーがアイデンティティ・プロバイダを選択すると、選択したIdPを含むSSOリクエストがカスタム・ページからIdentity Federationに再送信されます。

詳細は、次の各項を参照してください。

40.7.1 バンドルされたIdP検出サービスの構成

Identity Federationには、単純なアイデンティティ・プロバイダ検出サービスが用意されています。これを使用することにより、フェデレーションSSO操作で使用されるフェデレーションIdPパートナを実行時に決定できます。

バンドルされたIdP検出サービスを構成するには、次のようにします。

  1. WLST環境を入力します。
    $OH/common/bin/wlst.sh
  2. 管理サーバーに接続します。
    connect()
  3. ドメイン・ランタイムの場所に移動します。
    domainRuntime()
  4. 次のWLSTコマンドを実行して、IdP検出サービスを使用するようにIdentity Federationを構成します。
    putBooleanProperty("/spglobal/idpdiscoveryserviceenabled", "true")
  5. 次のWLSTコマンドを実行して、デフォルトのすぐに使用可能なIdP検出サービスを使用するようにIdentity Federationを構成します。
    putBooleanProperty("/spglobal/idpdiscoveryservicepageenabled", "true")putStringProperty("/spglobal/idpdiscoveryserviceurl", "/oamfed/discovery.jsp")

40.7.2 カスタムIdP検出サービスでのIdentity Federationの構成

リモートでデプロイされたカスタムIdP検出サービスとやり取りするようにIdentity Federationを構成できます。

カスタムIdP検出サービスを指定してIdentity Federationを構成するには、次のようにします。

  1. WLST環境を入力します。
    $OH/common/bin/wlst.sh
  2. 管理サーバーに接続します。
    connect()
  3. ドメイン・ランタイムの場所に移動します。
    domainRuntime()
  4. 次のWLSTコマンドを実行して、IdP検出サービスを使用するようにIdentity Federationを構成します。
    putBooleanProperty("/spglobal/idpdiscoveryserviceenabled", "true")
  5. 次のWLSTコマンドを実行して、カスタムIdP検出サービスを使用するようにIdentity Federationを構成します(IDP_DISCOVERY_SERVICE_URLを検出サービスの完全修飾URLに置き換えます)。
    putBooleanProperty("/spglobal/idpdiscoveryservicepageenabled", "false")
    putStringProperty("/spglobal/idpdiscoveryserviceurl", "IDP_DISCOVERY_SERVICE_URL")

実行時に、Identity Federationは次のパラメータを指定して、IdP検出サービス・ページへのリダイレクトを行います。

  • return: このページからIdentity Federationに対する新しいリクエストの送信先のURLです。リクエストには選択されたIdPのプロバイダIDが含まれます。

  • returnIDParam: Identity Federationに送信するリクエストで、選択されたIdPのプロバイダIDを指定する際に使用するパラメータの名前です。

検出サービスはこれらのパラメータの値を取得し、IdPのリストを表示した後、選択されたIdPのプロバイダIDを指定して新しいリクエストをIdentity Federationに送信します。

ノート:

URL問合せパラメータ値が正しくURLエンコードされていることを確認します。

IdP検出サービス・ページの例

次の例は、IdP検出サービス・ページを示しており、ユーザーがアイデンティティ・プロバイダを(プロバイダIDのリストhttp://idp1.comhttp://idp2.comhttp://idp3.comから)選択すると、選択したプロバイダIDがIdentity Federationに送信され、SSOフローが続行されます。

<%@ page buffer="5kb" autoFlush="true" session="false"%>
<%@ page language="java" import="java.util.*, java.net.*"%>
 
<%
// Set the Expires and Cache Control Headers
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "Thu, 29 Oct 1969 17:04:19 GMT");
 
// Set request and response type
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
String submitURL = request.getParameter("return");
String returnIDParam = request.getParameter("returnIDParam");
 
List idps = new ArrayList();
idps.add("http://idp1.com");
idps.add("http://idp2.com");
idps.add("http://idp3.com");
 
%>
 
<html>
  <title>
  Select an Identity Provider
  </title>
<body bgcolor="#FFFFFF"><form  method="POST" action="<%=submitURL%>" id="PageForm" name="PageForm" autocomplete="off">
    <center>
                <table cellspacing="2" cellpadding="5" border="0" width="500">
                    <tr><td colspan="2" align="center">
                         Select an Identity Provider
                    </td></tr>
                    </tr>
                    <tr>
                        <td align="right">Provider ID</td>
                        <td>
                           <select size="1" name="<%=returnIDParam%>">
<%
Iterator idpIT = idps.iterator();
while(idpIT.hasNext())
{
        String idp = (String)idpIT.next();
%>
                                <option value="<%=(idp)%>"><%=idp%></option>
<%
}
%>
 
                           </select>
                         </td>
                    </tr>
                    <tr>
                         <td colspan="2" align="center">
                            <input type="submit" value="Continue"/>
                         </td>
                    </tr>
                </table>
      </center>
     </form>
    </body>
</html>

40.7.3 IdP検出サービスの使用の無効化

IdP検出サービスの使用を無効にするには、次のようにします。

  1. WLST環境を入力します。
    $OH/common/bin/wlst.sh
  2. 管理サーバーに接続します。
    connect()
  3. ドメイン・ランタイムの場所に移動します。
    domainRuntime()
  4. 次のWLSTコマンドを実行して、IdP検出サービスの使用を停止するようにIdentity Federationを構成します。
    putBooleanProperty("/spglobal/idpdiscoveryserviceenabled", "false")
    putBooleanProperty("/spglobal/idpdiscoveryservicepageenabled", "false")
    putStringProperty("/spglobal/idpdiscoveryserviceurl", "/oamfed/discovery.jsp")