Oracle® Fusion Middleware Oracle Access Management管理者ガイド 11g リリース2 (11.1.2.3) for All Platforms E61950-08 |
|
![]() 前 |
![]() 次 |
アイデンティティ・プロバイダ検出は、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に再送信されます。
詳細は、次の各項を参照してください。
Identity Federationには、単純なアイデンティティ・プロバイダ検出サービスが用意されています。これを使用することにより、フェデレーションSSO操作で使用されるフェデレーションIdPパートナを実行時に決定できます。
バンドルされたIdP検出サービスを構成するには、次のようにします。
リモートでデプロイされたカスタムIdP検出サービスとやり取りするようにIdentity Federationを構成できます。
カスタムIdP検出サービスを指定してIdentity Federationを構成するには、次のようにします。
実行時に、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.com、http://idp2.com、http://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>