この章では、Oracle Identity Federationに関連する問題について説明します。内容は次のとおりです。
この項では、一般的な問題および回避方法について説明します。内容は次のとおりです。
データベース表を認証エンジンとして使用し、パスワードがMD5またはSHAのいずれかでハッシュされて格納されている場合、base64形式である必要があります。
ハッシュされたパスワードはbase64でエンコードされた形式であるか、{SHA}または{MD5}の接頭辞を持ちます。次に例を示します。
{SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=
この項では、構成に関する問題およびその回避方法について説明します。内容は次のとおりです。
サイトで同じドメインにOracle SOA SuiteとOracle Identity Federationが含まれている場合、『Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation』のWLST
の設定手順は、WLST
でOracle Identity Federationコマンドを正常に実行するには不十分です。
これは、IdMドメインをインストールし、Oracle SOAインストールで拡張した場合に起こります。SOAインストールによってORACLE_HOME
環境変数が変更されます。Oracle Identity FederationのWLST
環境はORACLE_HOME
のIdM値に依存するため、これによって環境が損われます。
WLST
コマンドを使用できるようにするには、次の手順に従います。
『Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation』のWLST環境の設定に関する項に記載されている手順を実行します。
OIF-ORACLE_HOME/fed/script/*.py
をWL_HOME/common/wlst
へコピーします。
CLASSPATH
環境変数をOIF-ORACLE_HOME/fed/scripts
に追加します。
Oracle Virtual DirectoryをOracle Identity Federationのユーザー・ストアまたは認証エンジンとして使用するには、ローカル・ストレージ・アダプタを構成し、インストール時またはインストール後の構成時に必要に応じてコンテキスト・ルートを作成する必要があります。
このタスクの詳細は、『Oracle Fusion Middleware Oracle Virtual Directory管理者ガイド』の「Oracle Virtual Directoryアダプタの作成と構成」を参照してください。
フェデレーションの編集ページで、リモートWSフェデレーション・サービス・プロバイダのOracle Identity Federation(OIF)設定に「SSOトークン・タイプ」というプロパティが含まれています。IdP共通設定ページから値を継承するか、これをオーバーライドするかを選択できます。OIFの設定に表示されるプロパティの数は「SSOトークン・タイプ」の値に依存します。
「SSOトークン・タイプ」を別の値でオーバーライドする(SAML2.0からSAML1.1へ変更するなど)よう選択した場合、OIFの設定に表示されるプロパティの数は、「適用」ボタンをクリックするまで変わりません。
また、「デフォルト名前IDフォーマット」の値を永続識別子または一時/単発識別子にオーバーライドして「SSOトークン・タイプ」の値をSAML2.0からSAML1.1またはSAML1.0に変更した場合、「デフォルト名前IDフォーマット」の値が空になることに注意してください。続行するには、このプロパティをリストの有効な値に再設定します。
WSフェデレーションの信頼できるサービス・プロバイダを作成する場合、次の手順で「Microsoft Webブラウザ・フェデレーテッド・サインオンの使用」に値を設定する必要があります。
Fusion Middleware Controlで、「フェデレーション」→「フェデレーションの編集」と移動します。
WSフェデレーションの信頼できるサービス・プロバイダを新規に作成するよう選択し、「編集」をクリックします。
「信頼できるプロバイダ設定」セクションでチェック・ボックスを選択または選択解除して「Microsoft Webブラウザ・フェデレーテッド・サインオンの使用」に値を設定します。
「適用」をクリックします。
フェデレーション・ストアがXMLベースの場合、レコードの削除後、そのレコードがフェデレーテッド・アイデンティティ表に表示され続けます。
次のシナリオで問題について説明します。
フェデレーション・データ・ストアはXMLです。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を使用してフェデレーテッドSSOを実行します。
Fusion Middleware ControlでOracle Identity Federationインスタンスを特定し、「管理」→「アイデンティティ」→「フェデレーテッド・アイデンティティ」と移動します。
作成されたフェデレーション・レコードをクリックし、削除します。
削除後も、フェデレーテッド・レコードが表にあります。レコードの削除をさらに試みると、エラーになります。
回避方法は、「検索」をクリックして表を手動でリフレッシュすることです。
問題
この問題は、Fusion Middleware ControlでOracle Access Managerをサービス・プロバイダ統合モジュールとして構成した場合に起こります。スキーム(OIF-password-protected
など)にデフォルトが設定されていますが、ラジオ・ボタンが無効なため、デフォルト認証スキームを設定できません。
解決策
優先使用するデフォルトの認証スキームを設定するには、次の手順に従います。
現在デフォルトとして設定されているが、無効なスキームの「作成」チェック・ボックスを選択します。
作成する認証スキームの「作成」チェック・ボックスを選択します。
デフォルトとして設定するスキームのラジオ・ボタンをクリックします。
スキームを作成しない場合のみステップ1のスキームの「作成」チェック・ボックスを選択解除します。
ページで、すべての必要なプロパティを指定します。
「Oracle Access Managerの構成」ボタンをクリックして変更を適用します。
これで、デフォルト認証スキームが選択したものに設定されました。
注意: また、認証スキームを削除する場合、デフォルト・スキームを削除しないようにしてください。スキームを削除する必要がある場合、削除前にデフォルトを別の認証スキームに変更します。 |
SAML 1.xプロトコルで、アーティファクト・プロファイルを使用して10g Oracle Identity Federationサーバーと11g Oracle Identity Federationサーバーを連携させるには、2つのサーバーの間にBasic認証またはクライアント証明書認証を設定する必要があります。
手順は次を参照してください。
11gリリース1(11.1.1)の『Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation』のSOAPエンドポイントの保護に関する項
10g(10.1.4.0.1)の『Oracle Identity Federation管理者ガイド』のOracle Identity FederationがSPである場合に関する項
この項では、『Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation』(部品番号E13400-01)の訂正箇所を示します。内容は次のとおりです。
『Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation』のカスタマイズされたシングル・サインオン統合のサンプル統合モジュールに関する項には、domainapplication.jspの実装についての間違ったサンプル・コードが含まれています。
このコードを次の正しいコードに置き換えてください。
<%@page buffer="5" autoFlush="true" session="false"%> <%@page language="java" import="java.net.*, java.util.*"%> <% response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); response.setHeader("Expires", "Thu, 29 Oct 1969 17:04:19 GMT"); Cookie[] cookies = request.getCookies(); String userid = null; Date timeout = null; for(int i = 0, size = (cookies != null ? cookies.length : 0); i < size; i++) { String name = cookies[i].getName(); if ("spintegrationcookie".equals(name)){ String value = cookies[i].getValue(); StringTokenizer st = new StringTokenizer(value, "*"); userid = st.nextToken(); timeout = new Date(Long.parseLong(st.nextToken())); break; } } if (userid == null || userid.length() == 0) { request.setAttribute("oracle.security.fed.sp.engineid", TEST_ENGINE_ID); request.setAttribute("oracle.security.fed.sp.usedefault", Boolean.TRUE); request.setAttribute("oracle.security.fed.sp.relaystate", "/engine/domainapplication.jsp"); request.getSession().getServletContext().getContext("/fed").getRequestDispatcher(" /sp/startsso").forward(request, response); return; } %> Welcome <%=userid%>. You are logged until <%=timeout%>
『Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation』のログアウト・サービスの1つ目の例に関する項には、logout.jspの実装についての間違ったサンプル・コードが含まれています。
このコードを次の正しいコードに置き換えてください。
<%@page buffer="5" autoFlush="true" session="false"%> <%@page language="java" import="java.net.*"%> <% response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); response.setHeader("Expires", "Thu, 29 Oct 1969 17:04:19 GMT"); request.getSession().removeAttribute("feduserid"); request.setAttribute("oracle.security.fed.sp.engineid", TEST_ENGINE_ID); request.getSession().getServletContext().getContext("/fed").getRequestDispatcher(" /user/logoutretsso").forward(request, response); %>
ログアウト・サービスの2つ目の例に関する項には、domainlogout.jsp.jspの実装についての間違ったサンプル・コードが含まれています。
このコードを次の正しいコードに置き換えてください。
<%@page buffer="5" autoFlush="true" session="false"%> <%@page language="java" import="java.net.*"%> <% response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); response.setHeader("Expires", "Thu, 29 Oct 1969 17:04:19 GMT"); Cookie cookie = new Cookie("spintegrationcookie", ""); cookie.setDomain(".us.oracle.com"); cookie.setPath("/"); cookie.setMaxAge(0); response.addCookie(cookie); request.setAttribute("oracle.security.fed.sp.engineid", TEST_ENGINE_ID); request.getSession().getServletContext().getContext("/fed").getRequestDispatcher(" /user/logoutretsso").forward(request, response); %>
『Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation』のSAML 1.xおよびWS-Federation用のシングル・サインオンの設定に関する項にあるSAML 1.xの必須属性の入力手順には、明確な説明が必要です。
この手順の4dを次のように読み替えます。
「SSOプロバイダIDパラメータの開始」フィールドに、ピア・プロバイダでサービス・プロバイダのプロバイダIDの識別に使用するパラメータの名前を入力します。Oracle Identity Federationピア・アイデンティティ・プロバイダの場合、パラメータ名はproviderid
です。
このすぐ後のステップ4eに次の追加をします。
たとえば、Oracle Identity Federationピア・アイデンティティ・プロバイダは、前述のステップb、c、dで入力した構成を使用する次の「SSO URLの開始」を持つ場合があります。
http://saml.example.com/fed/idp/initiatesso?TARGET=<protected-resource-url>&providerid=<sp-provider-id-uri>
『Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation』のSP統合モジュールとしてのOracle Access Managerの統合に関する項で、Oracle WebLogic Server環境の更新手順には、次のスクリプトを使用するように記載されています。
$DOMAIN/bin/startManagedServer.sh
このスクリプト名は正しくありません。正しいスクリプト名は次のとおりです。
startManagedWebLogic.sh
(Linuxの場合)
startManagedWebLogic.cmd
(Windowsの場合)
また、Linuxの手順のみ記載されています。Windowsには次のテキストが必要です。
$DOMAIN/bin/startManagedWebLogic.cmd
ファイルを開きます。次の追加を行います。
set PATH=%PATH%;AccessSDK_InstallDir/oblix/lib
(管理コンソールではなく)コマンドラインから管理対象サーバーを起動します。
『Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation』のエラー発生時のターゲットURLへのリダイレクトに関する項に、次の記載があります。
serverconfig構成グループの文字列プロパティornnnを、Oracle Identity Federationからエラーが返された場合のユーザーのリダイレクト先のURLに設定します。ここで、nnnは401、404または500です(つまり、or401、or404およびor500プロパティを設定できます)。
これを次のものに置き換えます。
serverconfig構成グループの文字列プロパティまたはurlerrornnnを、Oracle Identity Federationからエラーが返された場合のユーザーのリダイレクト先のURLに設定します。ここで、nnnは401、404または500です(つまり、urlerror401、urlerror404およびurlerror500プロパティを設定できます)。
Sun Oneプロキシ・サーバーのOracle Identity Federation用構成の詳細は、『Oracle Fusion Middleware Using Web Server Plug-Ins with Oracle WebLogic Server』(部品番号E14395-01)のobj.confファイルの変更に関するガイドラインを参照してください。
『Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation』のセンサーの重みに関する項は、センサーの重みを設定する手順に誤植があります。
"-oracle.dms.sensors=
level
"を"-Doracle.dms.sensors
=level
"と読み替えます。この変更は2箇所行う必要があることに注意してください。
Oracle Identity Federationでは、署名と暗号化キーストアに対する1つのパスワードの構成のみサポートされ、そのパスワードを使用してキーストアと秘密鍵の両方を開きます。これは、キーストアが異なるストア・パスワードとキー・パスワードで構成されている場合、Oracle Identity Federationで秘密鍵にアクセスしようとすると、エラーになるということです。
このエラーを回避するには、構成されているキーの別名の秘密鍵パスワードをキーストア・パスワードと同じにします。
注意: Oracle Identity Federation 11gリリース1(11.1.1)では、キーストア・パスワードに合せてキー・パスワードを変更する場合、古いキーストアやウォレットを構成から削除する必要があります。 |