| 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>