この章では、Oracle Identity Federationに関連する問題について説明します。内容は次のとおりです。
この項では、インストールとアップグレードの問題について説明します。内容は次のとおりです。
問題
Oracle Identity Federationデータ・ストアのLDAPスキーマのアップグレードでSSL対応のポートの使用を指定すると、Oracle Identity Federationのインストール時にコンフィギュレーション・アシスタントが失敗します。
この問題は次の条件下で発生します。
次のいずれかのプラットフォームでインストールを実行する場合:
AIX 5L-based Systems(64ビット)
IBM zSeries-based Linux
Linux on Power
インストーラの構成オプションの選択ページで、LDAPサーバーのフェデレーション・データ・ボックスを選択してインストール時にLDAPスキーマをアップグレードすることを指定した場合。
インストーラのフェデレーション・データ・ストアの指定ページで、このポートがSSLポートである場合に選択ボックスを選択して、LDAPスキーマのアップグレード時にインストーラがLDAP SSLポートでの接続を使用するように指示した場合。
Oracle Identity Federationコンフィギュレーション・アシスタントは、インストールのこの段階で失敗します。失敗は、install*Actions*.log
および$ORACLE_HOME/fed/log/federation-install.log
に表示されます。
install*Actions*.log
では、次のようなエラーが表示されます。
Opening connection to the LDAP server Error while interacting with the LDAP server: javax.naming.NamingException: Cannot connect to any LDAP Servers The Federation Configuration Assistant failed A log of the Federation Configuration Assistant is available at /project/as10/qa /fed_ssl/fed/log/federation-install.log java -jar install.jar <params> where params are: -oh ORACLE_HOME The ORACLE_HOME directory. Required -transient type The type of transient data store (rdbms or memory). Required -dbtnsname tnsname The RDBMS TNS name. Required if rdbms used for transient data store -dbusername username The RDBMS username. Required if rdbms used for transient data store -dbpwd password The RDBMS password. Required if rdbms used for transient data store -uselocalconfig <true|false> Indicates whether or not RDMBS config data will be overwritten
$ORACLE_HOME/fed/log/federation-install.log
では、サポートされない暗号スイートに関するエラーが表示されます。
07/10/25 14:09:47: ERROR oracle.security.fed.model.util.ldap.LDAPConnectionManager - javax.naming.CommunicationException: strsun03.us.oracle.com:636 [Root exception is java.lang.IllegalArgumentException: Unsupported ciphersuite TLS_RSA_WITH_AES_128_CBC_SHA]
この問題は、Oracle Identity Federationコンフィギュレーション・アシスタントが、これらのプラットフォームに同梱されたJDKによってサポートされない暗号スイートの使用を試みた場合に起こります。
解決策
この問題を修正する個別パッチが発行されています。この修正を使用すると、インストーラは最初に問合せを実行してサポートされた暗号スイートを取得するため、Oracle Identity Federationコンフィギュレーション・アシスタントではその暗号スイートのセットのみが使用されます。
OracleAS 10.1.4.0.1 Oracle Identity Federationインストールの個別パッチ・セットを適用するには、パッチ・セットのZIPファイルをダウンロードします。パッチ・セットに含まれているREADMEファイルの説明に従ってください。
この修正は、修正または予防のいずれかの方法で適用できます。
前述のOracle Identity Federationコンフィギュレーション・アシスタントの失敗が発生した場合に、個別パッチ・セットを適用してコンフィギュレーション・アシスタントを再試行します。
Oracle Identity Federationコンフィギュレーション・アシスタントの失敗を完全に防止するには、インストール中にroot.sh
ポップアップ・ウィンドウが表示された直後にパッチ・セットを適用します。
パッチ・セットの適用後、通常どおりroot.sh
を実行し、インストールを続行します。これにより、コンフィギュレーション・アシスタントは実行され、Oracle Identity Federationコンフィギュレーション・アシスタントはエラーなしで実行されます。
この項では、一般的な問題および回避方法について説明します。内容は次のとおりです。
このリリースからは、資格証明を入力してSiteMinderで保護されているリソースにアクセスした後、Oracle Identity Federationでサポートされているプロトコルを使用して同じブラウザでシングル・サインオンを実行しようとすると、ユーザーは再び資格証明を入力するように要求されます。
この問題は、Oracle Identity Federationがサービス・プロバイダとして使用され、OracleAS Single Sign-Onがユーザー・データ・ストアであり、SAML 1.xまたはWS-Federationを使用してフェデレーテッド・ユーザーにOracleAS Single Sign-Onセッションが作成されている場合に関連します。そのセッションが期限切れになると、サービス・プロバイダのOracle Identity Federationサーバーは、SAML 2.0を使用してセッションの再認証を試行します。サービス・プロバイダおよびIDプロバイダ上でSAML 2.0が有効になっていない場合、通常は「500 内部サーバー・エラー」で再認証が失敗します。
この問題を回避するには、OracleAS Single Sign-Onを構成します。ORACLE_HOME/sso/conf/policy.properties
ファイルを開き、デフォルトのSSOサーバー認証プラグインを持つすべてのパートナ・アプリケーションを保護します。SASSO認証プラグインのセキュリティ・レベルを、OracleAS Single Sign-Onサーバー・プラグインのセキュリティ・レベルより高くなるように構成します。
この構成では、SAML 1.xまたはWS-Federationプロトコルによって認証されたユーザーがOracleAS Single Sign-Onで保護されているリソースにアクセスした場合、セッションがタイムアウトになると、そのユーザーはローカル認証のためにOracleAS Single Sign-Onサーバーにリダイレクトされます。Oracle Identity Federationでエラーが発生したり、間違ったIdPが表示されることはありません。
Oracle Access Manager WebGateエージェントがインストールされている場合、Microsoft Internet Information Servers(IIS)で属性共有機能を使用することはできません。この機能では、認証プラグインがクライアントのX.509証明書からSubjectDNを持つHTTPヘッダーを設定し、認可プラグインがそのヘッダーを取得してSAML属性問合せを開始します。しかし、IIS WebGateがSSLクライアント証明書の認証を実行する方法が原因で、認可プラグインはSubjectDNヘッダーを取得できません。この場合、ユーザーのブラウザで次のエラーが報告されます。
Oracle Access Managerの操作エラー: ユーザー<OblixAnonymous user DN>に対してURL <targetURL>へのアクセスが拒否されました。
また、次のエラー・メッセージがOBACCESS_INSTALL/access/oblix/config/logs/authz_attribute_plugin_log.txt
ファイルに書き込まれます。
SubjectDNヘッダーObNullString
および
SubjectDNがありません。ローカル・ユーザーを使用し、「続行」を押してください
Oracle Identity FederationがOracle Access Managerユーザー・データ・ストアとともにIDプロバイダとして使用されている場合、ユーザーが新しくSAML 1.xまたはWS-Federationシングル・サインオンを開始すると、ブラウザでリダイレクション・ループが発生することがあります。
これは、Oracle Identity Federation用に構成されているOracle Access Manager AccessGateのアイドル・セッション・タイムアウトが最大ユーザー・セッション時間よりも少ない場合に発生します。この場合、ユーザーがアイドル・セッションのタイムアウトが経過するのを待ってから別のSSOを開始すると、リダイレクション・ループが発生します。
これを回避するには、Oracle Identity Federation AccessGateのアイドル・セッション・タイムアウトを最大ユーザー・セッション・タイムアウト以上(デフォルト設定)に設定します。
日本語のインストール・セッション中、次の問題が発生します。
Oracle Universal Installerを起動します。
Oracle Identity Federation 10gインストール・オプションを選択します。
「インストール方法の選択」ページに進みます。
最初のラジオ・ボタン(「基本」)を説明するテキストが切り捨てられます。
Oracle Identity FederationがLDAPまたはRDBMSユーザー・データ・ストアとともにIDプロバイダとして使用されている場合、存在しないユーザー属性を使用して構成されたSAML 1.xアサーション・プロファイルによって、SAML 1.xおよびWS-Federationプロファイルを使用するすべてのシングル・サインオン(SSO)は失敗します。無効なプロファイルが使用されていなくても同じです。
LDAPまたはRDBMSユーザー・データ・ストアを使用するOracle Identity Federation IDプロバイダにユーザーがログインすると、Oracle Identity Federationはすべての構成済アサーション・プロファイル内のすべてのユーザー属性を取得しようとします。これらの属性のいずれかが無効である場合、SSOは失敗します。
RDBMSデータ・ストアを使用している場合、ユーザーは「500 内部サーバー・エラー」
を受け取ります。デバッグ・ロギングが有効になっている場合は、federation.log
ファイルに次のエラーが示されます。
RDBMSBridge.authenticate(): エラー - JDBCによってスローされたSQL例外: java.sql.SQLException: ORA-00904: "<attribute name>": 無効な識別子
LDAPデータ・ストアを使用している場合、ユーザーはID TSE007
のIdentity Federationエラーを受け取り、federation.log
ファイルに次のエラーが示されます。
レスポンダ: エラー、<userDN>のユーザー・ディレクトリは<assertion attribute>属性<user attribute>を持っていません。(RSE027)
回避方法は、原因となっているアサーション・プロファイル内の無効なユーザー属性を訂正するか、原因となっているアサーション・プロセスを削除することです。
SAML 1.0ではXML署名標準の使用方法が完全には指定されていないため、SAMLレスポンスのコンテキスト内では、Oracle Identity Federationは署名付きSAML 1.0アサーションを適切に生成することも、受け取った署名付きSAML 1.0アサーションを検証することもできません。このため、ArtifactプロファイルおよびPOST SSOプロファイルに使用されるSAML 1.0アサーションの署名は正しくありません。SAML 1.1がMyDomainでも宛先ドメインでも有効になっていない場合、アサーション署名が有効になったSAML 1.xアサーション・プロファイルを使用してシングル・サインオン(SSO)を実行しようとすると、サービス・プロバイダまたは宛先サイトはSSOアサーションの署名を検証できず、SSOが失敗することがあります。宛先サイトがOracle Identity Federationを使用している場合、federation.log
ファイルに次のメッセージが示されます。
受信者: エラー: 無効なSAMLレスポンスが受信されました: XML署名者: エラー: 署名が無効か、内容が変更されています
回避方法は、SAML 1.0ではなくSAML 1.1プロトコルを使用することです。(実際、SAML 1.1が改訂された理由の1つは、XML署名の使用方法を改善することにありました。)
注意: SAML 1.x SSOプロファイルでは、署名付きアサーションは必須でなく、一般には使用されていません。 |
デフォルトでは、JDBCはOracle Identity FederationとOracle9i Database Serverの間のネットワーク接続を暗号化しません。オプションで、サイトはOracle Advanced Securityを使用してこれらの接続を暗号化できます。
Oracle Internet Directoryまたはその他のLDAPサーバーを使用してユーザーを認証するようにOracle Identity Federationを構成する場合、サイトはSSLを使用してLDAPサーバーに接続するかどうかを選択できます。SSLを使用しない場合、Oracle Identity FederationとLDAPサーバーの間のネットワーク接続を介して、暗号化されていないパスワードを送信できます。
サード・パーティの認証局で発行された署名証明書が、Oracle Identity FederationのSAML 1.xまたはWS-Federation部分のキーストアにインストールされており、デバッグ・ロギングが有効になっていると、次のようにエラーが誤って報告されます。
XML SIGNATURE: cert verify check: FAILED - java.security.SignatureException: Signature does not match.
実行される証明書検証は自己署名証明書のみに対応します。このエラーはOracle Identity Federationの処理には影響しません。このログ・メッセージは無視することができます。
OracleAS Single Sign-Onと統合した場合、Oracle Identity Federationでは資格証明をユーザーに再要求する機能がサポートされません。したがって、Oracle Identity Federationでは、再認証を実行する必要があるユースケースをサポートできません。
たとえば、SPがForceAuthn="true"
が指定されたAuthnRequestをOracle Identity Federation IdPに送信し、Oracle Identity FederationがOracleAS Single Sign-Onと統合している場合、ForceAuthn
フラグは無視されます。
この項では、構成の問題および回避方法について説明します。内容は次のとおりです。
次のような場合、Oracle Identity Federation管理コンソールにアクセスできないことがあります。
一時データ・ストア用のRDBMSデータベースを変更するために、コマンドライン・コンフィギュレーション・アシスタントが実行されています。コマンドの書式は次のとおりです。
java -jar install.jar -transient rdbms <parameters>
コマンドの実行後、Oracle Identity Federation管理コンソールがアクセス不能になり、フェデレーション・ログまたはOPMNログに次のようなエラーが示されます。
ユーザー名またはパスワードが正しくありません。
この問題は、ユーザー名とパスワードの組合せを変えて使用して、Oracle Identity Federation一時ストアのデータベースを別のデータベースに切り替えた場合、または同じデータベースを別の資格証明で使用した場合に発生します。
この問題の原因は、RDBMS一時データ・ストア用にOracle Identity Federationがすでに設定されているにもかかわらず、コマンドライン・コンフィギュレーション・アシスタントの実行時にデータベース・パスワードがリセットされていないために、Oracle Identity Federation操作を実行しようとすると無効なユーザー名とパスワードのエラーが発生することにあります。
この問題を回避するには、次の手順を実行します。
Oracle Enterprise Manager 10g Grid Controlコンソールにログオンします。
「OC4J_FED」→「管理」→「セキュリティ」へナビゲートします。
「ユーザー」リストでjazn.com/oif_dbエントリをクリックします。
適切なパスワードを入力してRDBMSにアクセスします。
OC4J_FEDインスタンスを適用し、再起動します。
レスポンス・メッセージとアサーションの両方を署名付きで送信するようにOracle Identity Federation IdPが構成されている場合は、アサーションのみが署名されます。
これによって、Liberty 1.xおよびSAML 2.0プロトコルに対するプロファイルを共有するSSOおよび属性が影響を受けます。レスポンス・メッセージにアサーションが含まれていないプロファイルは、この影響を受けません。
日本語ロケールにおいては、SAML 1.x POSTメソッドを使用するアサーションは次のエラーで失敗します。
エラー: SAMLレスポンスは必要な認可レベルによって署名されていませんでした(RVE013)
この問題の原因は、署名証明書サブジェクトDNおよび署名証明書発行者DN内のOUおよびSTに対応する文字列が変換されることにあります。
この問題の回避方法として、OUおよびSTの値を同等の英語文字列で置換する必要があります。英語の文字列の値は、MyDomain構成内の発行者DNおよびサブジェクトDNから取得できます。
『Oracle Identity Federation管理者ガイド』のOracleデータベースをユーザー・データ・ストア用のリポジトリとして使用する手順(5.4.2.1項「ユーザー・データ・ストアとしてのRDBMSの構成」)では、データベース表にCHAR
型の「ログイン」ID列が存在する場合に必要な追加手順は省略されています。Oracle RDBMS内でCHAR
データに対して適用される自動パディング(VARCHAR2
データに対しては行われない)を構成するには、これらの手順が必要です。
「ログイン」ID列がCHAR
型のとき、Oracleデータベース表に対するデータソースを作成するには、次の手順を実行します。
Oracle Identity FederationインスタンスのEnterprise Managerコンソールにログインし、「OC4J_FED」→「管理」→「データソース」へナビゲートします。
次の例を参考にして、新しいデータソースを作成します。
Name: myDS Data Source Class: oracle.jdbc.pool.OracleDataSource JDBC URL: jdbc:oracle:thin:@stahs08.us.oracle.com:1521:ORCL JDBC Driver: oracle.jdbc.driver.OracleDriver Username: CUSTDATA Password: PASSWORD Location: jdbc/RDBMSUserDataSource
変更を適用します。
OC4J_FEDインスタンスを再起動します。
注意: 「トランザクション(XA)ロケーション」フィールドおよび「EJBロケーション」フィールドには何も入力しないでください。 |
管理コンソール(「サーバー構成」→「トラスト・サークル」ページおよび「アイデンティティ・フェデレーション」→「信頼できるプロバイダ」ページ)では、次の3種類のエンティティのみが表示されます。
IDプロバイダ
サービス・プロバイダ
アフィリエーション
プロバイダのSAML 2.0メタデータにSPSSODescriptor
、IdPSSODescriptor
またはAffiliationDescriptor
が含まれない場合、メタデータはこれら3つのどの種類にも分類されません。
たとえば、ピア・プロバイダのメタデータにAttributeAuthorityDescriptor
しか含まれない場合は、ロードしても「トラスト・サークル」ページに表示されません。ただし、このようなプロバイダも、メタデータでパブリッシュしたプロトコルがサポートされるかぎり、実行時には正常に機能します。
AttributeRequesterDescriptor
要素を含むSAML 2.0メタデータがロードされると、XML解析エラーが発生します。
この結果、管理コンソールに「500 内部サーバー・エラー」
が表示されます。
この問題の回避方法はありません。
管理コンソールでプロトコル・プロファイルを無効にしても(たとえば、「サーバー構成」→「IDプロバイダ」→「SAML 2.0」→「プロトコル・プロファイルの有効化」)、生成されるメタデータでどのプロファイルをパブリッシュするかが制御されるだけです。実行時には、これらのプロファイルに対するリクエストは通常どおりに処理されます。
この問題の回避方法はありません。
ピア・プロバイダに対してロードされたメタデータに、問合せパラメータを含むサービスURL(たとえばAssertionConsumerService)が含まれる場合、プロトコル・プロファイルの実行時に、Oracle Identity FederationはそのURLに正しくリダイレクトできません。
この項では、ドキュメントの訂正箇所を示します。内容は次のとおりです。
Oracle Identity Federationのオンライン・ヘルプ・ページのタイトル「Web 2.0 BetaのOracleヘルプ」は間違っています。正しいタイトルは、管理コンソールの場合は「Oracle Identity Federation管理ヘルプ」で、監視コンソールの場合は「Oracle Identity Federation監視ヘルプ」です。
この注意書きは、『Oracle Identity Federation管理者ガイド』の次の項に関連しています。
8.2.2項「一時データ・ストアを変更するためのコマンドライン・コンフィギュレーション・アシスタント」
8.2.3項「アンインストール用のコマンドライン・コンフィギュレーション・アシスタント」
ドキュメントでは、これらのコンフィギュレーション・アシスタントがコマンドラインでパラメータとしてパスワードをとると説明されています。この方法は安全でないので、実施しないでください。
これらのツールではいずれも、コマンドラインにLDAPおよびRDBMSパスワードが入力されていない場合、ユーザーにLDAPまたはRDBMSパスワード(あるいはその両方)を入力するように要求されます。たとえば、uninstall
ツールは次のようなパラメータを使用して実行できます。
jdk/bin/java -jar fed/lib/uninstall.jar -uninstall -oh $ORACLE_HOME -removefed true -ldap false -ldaptype oid -ldapurl ldap://my.ldap.com -ldapusername USERNAME -db false
この場合、次のメッセージが表示され、LDAPパスワードを入力するように要求されます。
Parsing parameters Verifying parameters Enter password for LDAP Username "USERNAME":
一時データ・ストアの変更(ドキュメントの8.2.2.1項)を行う場合、コマンドライン・コンフィギュレーション・アシスタントの次のパラメータは必要ありませんので注意してください。
-dbpwd <PASSWORD>: これはRDBMSパスワードです。RDBMSが一時データ・ストア用に使用されている場合にのみ必要です。
アンインストール(ドキュメントの8.2.3.1項)を行う場合、コマンドライン・コンフィギュレーション・アシスタントの次のパラメータは必要ありません。
-ldappwd: これはLDAPユーザーのパスワードです。
-dbpwd password: RDBMSパスワード。dbがtrueの場合にのみ必要です。
どちらのツールでも、ユーザーはコマンドラインでパスワードを指定できますが、この方法はお薦めできません。コマンドラインでパラメータとしてパスワードを渡すと、警告メッセージが表示されます。
注意: コマンドラインでパスワードを入力することは安全ではありません。このユーティリティの安全な使用方法については、最新の製品ドキュメントを参照してください。 |
Oracle Identity Federationの今後のリリースでは、コマンドラインでパスワードは入力できなくなり、パスワードのプロンプトのみ表示されるようになります。
『Oracle Identity Federation管理者ガイド』の「アイデンティティ・プロバイダ: グローバル設定」および「サービス・プロバイダ: グローバル設定」には、共通ドメインCookieを使用したIdP検出プロファイル用にアイデンティティ・プロバイダ(IdP)またはサービス・プロバイダ(SP)を構成する手順が記載されています。
リリース10.1.4.0.1のドキュメント(『Oracle Identity Federation管理者ガイド』)では、項番号は次のとおりです。
5.3.3.1項「アイデンティティ・プロバイダ: グローバル設定」
5.3.3.4項「サービス・プロバイダ: グローバル設定」
これらのプロバイダの構成手順は不十分です。次の文章に読み替えてください。
5.3.3.1項「アイデンティティ・プロバイダ: グローバル設定」
...
共通ドメインURL
トラスト・サークル内のプロバイダでIdP導入Cookie用の共通ドメインについて合意済の場合、サークル内の各アイデンティティ・プロバイダは、Cookie書込みサービスが共通ドメインでホストされるようにする必要があります。
Oracle Identity FederationのIdPでは、/fed/idp/introパスでサービスが実行されます。HTTPサーバーは、共通ドメイン内のhost:portをリスニングするよう構成される必要があります。この完了後、共通ドメインURLを構成できます。
たとえば、合意済共通ドメインが.cdc.example.orgで、Oracle Identity Federation IdPがidp.mycorp.comでホストされ、IdPのHTTPサーバーがmycorpidp.cdc.example.org:7778でリスニングするよう構成されているとします。この場合、IdPのCookie書込みサービスの共通ドメインURLは次のとおりです。
http://mycorpidp.cdc.example.org:7778/fed/idp/intro
「共通ドメイン有効」を選択している場合にのみ、この値を設定します。
5.3.3.4項「サービス・プロバイダ: グローバル設定」
...
共通ドメイン有効
IDフェデレーション・ネットワークに複数のアイデンティティ・プロバイダが含まれる場合、プリンシパルで使用されるアイデンティティ・プロバイダを決定する方法が、サービス・プロバイダで必要です。これは、フェデレーション・ネットワーク内のすべてのIdPおよびSPでCookieのドメインについて合意し、このドメインで書き込まれるCookie(ユーザーがログインしたすべてのIdPがリストされる)をユーザーのブラウザに送信することで実現できます。このようなドメインは共通ドメインと呼ばれ、IdPを識別するCookieは共通ドメインCookieまたはIdP導入Cookieと呼ばれます。
このSPで導入Cookieを読み取って認証に使用するIdPを見つけるよう指定するには、「共通ドメイン有効」を選択します。
共通ドメインURL
トラスト・サークル内のプロバイダでIdP導入Cookie用の共通ドメインについて合意済の場合、サークル内の各サービス・プロバイダは、Cookie読取りサービスが共通ドメインでホストされるようにする必要があります。
Oracle Identity FederationのSPでは、/fed/sp/introssoパスでサービスが実行されます。HTTPサーバーは、共通ドメイン内のhost:portをリスニングするよう構成される必要があります。この完了後、共通ドメインURLを構成できます。
たとえば、合意済共通ドメインが.cdc.example.orgで、Oracle Identity Federation SPがsp.mycorp.comでホストされ、SPのHTTPサーバーがmycorpsp.cdc.example.org:7778でリスニングするよう構成されているとします。この場合、SPのCookie読取りサービスの共通ドメインURLは次のとおりです。
http://mycorpsp.cdc.example.org:7778/fed/sp/introsso
「共通ドメイン有効」を選択している場合にのみ、この値を設定します。