この付録では、Oracle Identity Federationを構成して、使用するときに発生する可能性がある一般的な問題と、その解決方法を説明します。
この項で取り扱う一般的な問題と解決方法は、次のトピックに分類されています。
この項では、一般的な問題および回避方法について説明します。内容は次のとおりです。
問題
Oracle Access Manager WebGateエージェントがインストールされている場合、Microsoft Internet Information Servers(IIS)で属性共有機能を使用することはできません。この機能では、認証プラグインがクライアントのX.509証明書からSubjectDNを持つHTTPヘッダーを設定し、認可プラグインがそのヘッダーを取得してSAML属性問合せを開始します。ただし、IIS WebGateによるSSLクライアント証明書の認証方法により、認可プラグインはSubjectDNヘッダーを取得できません。この場合、ユーザーのブラウザで次のエラーが報告されます。
Oracle Access Manager操作エラー<ターゲットURL>に対するユーザー<OblixAnonymousユーザーDN>のアクセスが拒否されました。
また、次のエラー・メッセージがOBACCESS_INSTALL/access/oblix/config/logs/authz_attribute_plugin_log.txt
ファイルに書き込まれます。
SubjectDNヘッダーObNullString
および
SubjectDNが見つかりません。ローカル・ユーザーを想定して続行を返します
解決方法
この問題を回避するには、Oracle HTTP ServerやSun One Web Serverなどの別のWebサーバーを使用してください。
問題
SAML 1.0ではXML署名仕様の使用方法を完全には規定していないため、SAML 1.0プロトコルの実装の相互運用が難しい場合があります。SP/RPがSAML 1.0 IdPによって作成されたXMLデジタル署名を検証できないことがあります。
したがって、SAML 1.0プロトコルを使用するアイデンティティ・プロバイダとサービス・プロバイダとの間のフェデレーションSSO処理中に、SAMLレスポンスとSAMLアサーションの検証時に、サービス・プロバイダ・サーバー上でエラーが発生することがあります。
解決方法
回避策は、SAML 1.0ではなくSAML 1.1プロトコルを使用することです。(実際、SAML 1.1が改訂された理由の1つは、XML署名の使用方法を改善することでした。)
注意: SAML 1.x SSOプロファイルでは、署名付アサーションは必須でなく、一般には使用されません。 |
デフォルトでは、JDBCはOracle Identity FederationとOracle Databaseの間のネットワーク接続を暗号化しません。オプションで、サイトはOracle Advanced Securityを使用してこれらの接続を暗号化できます。
Oracle Internet Directoryまたはその他のLDAPサーバーを使用してユーザー認証をするためにOracle Identity Federationを構成する場合、サイトはSSLを使用してLDAPサーバーに接続するかどうかを選択できます。SSLを使用しない場合、Oracle Identity FederationとLDAPサーバーの間のネットワーク接続を介して、暗号化されていないパスワードを送信できます。
Oracle Identity FederationがSSLを使用してLDAPサーバーに接続する必要がある場合(クライアント証明書認証ありまたはなしで)、まずOracle WebLogic Server管理コンソールでアイデンティティ・キーストアと信頼キーストアに必要な証明書を追加する必要があります。この情報は、Oracle Identity Federationが実行されている管理対象サーバーのサーバー/キーストア構成画面で提供されています。
Oracle Identity FederationがSSLを使用してLDAPサーバーに接続する必要がある場合に接続エラーが発生するときは、次のことを確認します。
適切なキーストア/証明書を使用するには、Oracle WebLogic Server管理対象サーバーを更新する必要があります。
Fusion Middleware Controlが実行されている管理サーバーにも正しいキーストア/証明書が必要です。
注意: Oracle Internet Directoryサーバーを使用している場合は、Oracle Internet Directoryでは認証なしのSSLを無効にすることはできないため、Oracle Internet DirectoryへのSSL接続はサーバー認証なしで作成されることがあることに注意してください。 |
RDBMSメッセージ・ストアを使用している場合、次のような警告がログに記録されることがあります。
[2009-02-05T11:43:34.322-08:00] [wls_oif1] [WARNING] [FED-12032] [oracle.security.fed.jvt.discovery.model.profilestate.RDBMSProfileStateDiscove ryProvider] [tid: Thread-25] [userId: <anonymous>] [ecid: 0000Hx7vp6JESO8nvgZBF119YUEk000004,1:5576] [APP: Oracle Identity Federation#11.1.1.1.0] [arg: java.lang.InterruptedException: sleep interrupted] InterruptedException: thread interrupt occurred during sleep() java.lang.InterruptedException: sleep interrupted
このようなルーチン・メッセージは通常処理の一部であり、単にRDBMSクリーニング・スレッドが停止したことを示しています。
アクションは不要です。
問題
Oracle Identity FederationサーバーがプロキシOHSのSSLポートを使用するように構成されている場合、メタデータを開くかロードしようとすると(Fusion Middleware Controlで、フェデレーション・サーバーの「セキュリティおよび信頼」ページの「メタデータ」タブを使用して)、メタデータ・ファイルが壊れているように見えます。
解決策
Oracle Identity FederationがSSL用に構成されている場合、Fusion Middleware Controlコンソールが実行されているOracle WebLogic Server管理サーバーは、Oracle Identity Federationが実行されているOracle WebLogic管理対象サーバーのSSL証明書(または証明書の認証局)を信頼する必要があります。
SSL証明書(またはそのCA)を信頼するようにOracle WebLogic Serverを構成するには、管理サーバーによってSSL接続に使用されているJSSE信頼キーストアに信頼できる証明書エントリとして必要な証明書を追加する必要があります。
参照:
|
インストール後、構成アシスタントでは、MBeansを使用してOracle Identity Federationサーバーへの大量の構成の更新が実行されます。このサーバーへの通知が行われるように、別のタスクによって、構成ファイルが変更されているかどうかが定期的にチェックされます。
この手順の実行中に解析エラーが発生すると、診断ログ・ファイルに次のようなメッセージが記録されます。
$DOMAIN_HOME/servers/wls_oif1/logs/wls_oif1-diagnostic.log . [org.xml.sax.SAXParseException: XML document structures must start and end within the same entity.] at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalExcept ion(AbstractUnmarshallerImpl.java:315) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmar shalException(UnmarshallerImpl.java:514) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0( UnmarshallerImpl.java:215) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(U nmarshallerImpl.java:184) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm arshallerImpl.java:137) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm arshallerImpl.java:184) at oracle.as.config.persistence.jaxb.JAXBXmlPersistenceManagerImpl.load( JAXBXmlPersistenceManagerImpl.java:156) ... 10 more Caused by: org.xml.sax.SAXParseException: XML document structures must start and end within the same entity. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAX ParseException(ErrorHandlerWrapper.java:195) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalErro r(ErrorHandlerWrapper.java:174) .
Oracle Identity Federationサーバーが稼働している(エラーなしで/fed/idp/metadata
にアクセスできる)場合、このメッセージは無害で、サーバーの安定性に影響しません。構成の変更は正常に実行され、すべてのサーバーに変更が通知されます。
この項では、フェデレーション・サーバーの構成に関する問題について説明します。
問題
日本語ロケールでは、SAML 1.x POSTメソッドを使用したアサーションは次のエラーで失敗します。
エラー: 「SAMLレスポンスが、予想された権限(RVE013)により署名されませんでした」
この問題の原因は、署名証明書サブジェクトDNおよび署名証明書発行者DN内のOUおよびSTに対応する文字列が変換されることにあります。
解決方法
この問題の回避策は、OU値とST値を同等の英語文字列と置換することです。英語文字列の値は、MyDomain構成内の発行者およびサブジェクトDNから取得できます。
問題
フェデレーション・データ・ストアがLDAPサーバーにある状態で、Liberty 1.x / SAML 2.0シングル・サインオン操作を実行するとスキーマ違反エラーが発生します。DOMAIN_HOME/servers/
servername/logs
/servername_diagnostics.log
に、次のエラー・メッセージが表示されます。
javax.naming.directory.SchemaViolationException:
[LDAP: エラー・コード65 -
orclfednamevalueが必須またはオプションの属性リストで見つかりません。]
この問題は、フェデレーション・データ・ストアのLDAPサーバーのスキーマがOracle Identity Federation属性とオブジェクト・クラスを含めるためアップグレードされていない場合に発生します。
解決方法
LDAPスキーマのアップグレードは、インストール時(拡張インストール・モードを使用)またはインストール後に行います。
インストール時のスキーマのアップグレード
インストール時にアップグレードするには、次の手順を実行します。
「拡張インストール」モードを選択します。
Oracle Identity Federation拡張フロー属性の選択ページで、フェデレーション・ストアに対するドロップダウンから「LDAP」オプションを選択します。これにより、フェデレーション・レコードが、スキーマのアップグレードが必要なLDAPサーバーに格納されるように指定されます。
フェデレーション・データ・ストアに対するLDAP属性の指定ページで、LDAP接続情報を入力します。これで、スキーマがインストール・プロセスの一部としてアップグレードされます。
インストール後のスキーマのアップグレード
インストール後にアップグレードを行うには、Oracle Identity Federationのインストールに、ldapmodify
ツールを使用してLDAPサーバーのスキーマをアップグレードできるLDIF
ファイルが含まれていることを確認してください。
使用するLDIF
ファイルは、使用するLDAPサーバーの種類によって異なります。
Oracle Internet Directoryを使用する場合は、$Oracle_Home/fed/setup/ldap/userFedSchemaOid.ldif
です。
Sun One Directory Server 5.xを使用する場合は、$Oracle_Home/fed/setup/ldap/userFedSchemaSunOne5.ldif
です。
Sun One Directory Server 6.xを使用する場合は、$Oracle_Home/fed/setup/ldap/userFedSchemaSunOne6.ldif
です。
IBM Tivoliを使用する場合は、$Oracle_Home/fed/setup/ldap/userFedSchemaTivoli.ldif
です。
Microsoft Active Directory Serverを使用する場合は、$Oracle_Home/fed/setup/ldap/userFedSchemaAD.ldif
です。この場合、LDIFファイルを編集して%DOMAIN_DN%
という文字列を使用中のActive Directoryのドメインの接尾辞と置き換える必要があります。
たとえば、接尾辞はdc=mydomain,dc=mycompany,dc=com
です。
ldapmodify
を使用して、LDAPスキーマをLDIFファイルでアップグレードできます。次に例を示します。
ldapmodify -c -D BIND_DN_USERNAME -w PASSWORD -f $Oracle_Home/fed/setup/ldap/userFedSchemaOid.ldif -h LDAP_HOSTNAME -p LDAP_PORT -x
Fusion Middleware Controlでは、Oracle Identity Federationイベントに対する監査ポリシーの構成時には、EM監査ポリシー・ページにはすべてのOracle Identity Federationイベントに対する成功および失敗イベント・タイプの両方が表示されますが、一般にほとんどのOracle Identity Federation構成変更イベントは設計上、成功ステータスしか持たないことに注意してください。
失敗が監査されるOracle Identity Federationイベントは、次のイベントのみです。
encryptData
decryptData
verifySignature
createSignature
localAuthentication
localLogout
createActiveUserFederation
deleteActiveUserFederation
createUserFederation
deleteUserFederation
createUserSession
deleteUserSession
incomingMessage
updateUserFederation
Oracle Enterprise Manager Fusion Middleware Controlを使用して構成データ・ストアをRDBMSに移行する際には、JNDI名を指定する必要があります。操作中にサーバー・ログに次のような警告メッセージが表示されることがあります。
<Warning> <oracle.security.fed.controller.web.servlet.OIFApplicationLifeCycleCallBack> <FED-10205> <The JNDI name for RDBMS configuration backend is empty.> <Warning> <oracle.security.fed.controller.web.servlet.OIFApplicationLifeCycleCallBack> <FED-10205> <The JNDI name for RDBMS configuration backend is empty.>
このメッセージは無視してかまいませんが、繰り返し表示される場合は、正しいJNDI名がFusion Middleware Controlで入力されていることを確認してください。
問題
セッションおよびメッセージ・データ・ストアにデータベース・ストアを使用するようOracle Identity Federationが構成されている場合、IDPPROVIDEDNAMEID
が200文字より長いと、次のエラーが表示されます。
ORA-12899: value too large for column "WDO_OIF"."ORAFEDTMPPROVIDERFED"."IDPPROVIDEDNAMEIDVALUE" (actual: 240, maximum: 200)\n]
解決方法
この問題を回避するには、idpProvidedNameIDValueの列サイズを240に増やすように、ORAFEDTMPPROVIDERFED
表を修正します。
この項では、Oracle Identity Federationがサービス・プロバイダ(SP)で、Oracle Single Sign-Onがバックエンドのアイデンティティ・プロバイダ(IdP)として設定されているときに発生する問題を説明します。内容は次のとおりです。
問題
Oracle Identity Federationがサービス・プロバイダとして構成されています。
パートナ・アプリケーションがOracle Identity Federationによって保護されるように構成されています。
保護されたリソースにユーザーがアクセスしようとすると、意図したOracle Identity Federationログイン・ページでなく、Oracle Single Sign-Onログイン・ページが表示されます。
パートナ・アプリケーションがmod_osso
に対して誤って構成されている場合にこの問題が発生し、ユーザーにローカル認証を求めます。
解決方法
パートナ・アプリケーションがmod_osso
に対して正しく構成されていることを確認するために必要な手順の概要を次に示します。詳細は、Oracle Enterprise Single Sign-On Suite Plus管理者ガイドを参照してください。
Oracle HTTP ServerとOC4J_SECURITYをシャットダウンします。
Oracle Application Server InfrastructureディレクトリにあるOracle HTTP Serverの構成ファイル、ORACLE_HOME/Apache/Apache/conf/httpd.conf
を次のように編集します。
AddModule
(Windows)ディレクティブおよびLoadModule
(Windows、Linux)ディレクティブを使用して、サーバーのロード済モジュールにosso_moduleを追加します。例については、Oracle Enterprise Single Sign-On Suite Plus管理者ガイドを参照してください。
仮想ホストを追加して、mod_osso
により保護される新しいパートナ・アプリケーション・リスナーを作成します。仮想ホストに対するmod_osso
の構成の詳細は、Oracle Enterprise Single Sign-On Suite Plus管理者ガイドを参照してください。
ssoreg
を実行して、手動でmod_osso
とOracle Single Sign-Onサーバーを構成します。
注意:
|
Oracle HTTP Server(OHS)とOC4J_SECURITY
を再起動します。
Oracle Identity FederationとOracle Single Sign-Onの統合についての追加情報は、Oracle Enterprise Single Sign-On Suite Plus管理者ガイドを参照してください。
問題
ブックマークしたログイン・ページを使用してログインしようするとエラーが返されます。これは、ユーザーが次の手順に従った場合に発生します。
SAML 2.0、LibertyまたはWS-Federationプロトコルを使用してシングル・サインオン(SSO)処理を実行します。
ログイン・ページで、ページにブックマークします。
新しいブラウザ・インスタンスを開いて、ブックマークしたログイン・ページに移動します。有効なユーザー資格証明を使用してログインします。
ユーザーはエラーを受け取り、SSOは失敗します。
解決方法
ログイン・ページはブックマークしないでください。Oracle Identity Federationでは、ブックマークしたログイン・ページの使用はサポートされません。
Firefoxブラウザを使用して、Fusion Middleware Controlの「フェデレーション」ページからプロバイダ・メタデータをアップロードすると、アップロードしたプロバイダ・メタデータ・ファイルはFirefoxを再起動するまで変更できません。
この問題の原因は、FirefoxのLive HTTP Headerアドオンです。このアドオンを無効にしてFirefoxを再起動すると、「フェデレーション」ページでプロバイダのメタデータをアップロードした後に、メタデータ・ファイルを変更できるようになります。
この項では、バックエンドでOracle Access Managerコンポーネントを構成する場合に発生することがある問題について説明します。内容は次のとおりです。
問題
アクセス・サーバーSDKが、アクセス・ゲートの実行権限を持つ特定のユーザーを指定します。
Oracle Identity Federationは別のユーザーの権限下にあるLinuxまたはSolarisプラットフォームにインストールされています。
アクセス・ゲート構成ページをOracle Access Managerユーザー・データ・ストアに適用すると、次のエラーを受け取ります。
AccessGate configuration failed. Reason: Preparing to connect to Access Server. Please wait. Error: Permission denied.
このエラーの原因はOracle Identity Federationとアクセス・サーバーSDKのインストールが、異なった所有者を持っていることです。
解決方法
Oracle Identity FederationがLinuxまたはSolarisにインストールされている場合は、アクセス・サーバーSDKの各ファイルが、Oracle Identity Federationインストールと同一の所有者およびグループを持っていることを確認します。
問題
アクセス・ゲートを使用してOracle Access Managerユーザー・データ・ストアの構成を試みると、アクセス・ゲートIDに非ラテン文字(たとえば、「ÆÖ2」)が含まれると、エラーになります。
アクセス・ゲート構成が失敗しました。理由: アクセス・サーバーへの接続を準備しています。お待ちください。クライアント認証が失敗しました。アクセス・ゲートIDを確認してください。
この問題は、アクセス・ゲートIDに、ASCII Latin-1以外の文字(「Ådmïn」)が含まれる場合にも発生します。
解決方法
Oracle Identity Federationアクセス・ゲートではアクセス・ゲートIDにASCII文字のみを使用するようにします。
問題
Fusion Middleware Controlを使用して、Oracle Access ManagerをSP統合モジュールとして使用するために構成しようとすると、Oracle Identity Federationは構成に失敗します。これは、Oracle Access Managerバックエンド・バージョン10.1.4.2以前を使用した操作で発生します。
この問題は、LD_ASSUME_KERNEL
環境変数の設定が正しくないことが原因の可能性があります。アクセス・サーバーSDKはLinuxスレッド・モデルをサポートし、Native POSIX Thread Library(NPTL)をサポートしていないため、この変数は2.4.19
に設定する必要があります。
たとえば、LD_ASSUME_KERNEL
が設定されていない場合は、Oracle Identity Federationのログ・ファイルにこのタイプのエラーが記録されます。
com.oblix.access.ObAccessException: Env variable LD_ASSUME_KERNEL not set to 2.4.19. at com.oblix.access.ObConfig.jni_initialize(Native Method) ...
またブラウザにも、この設定中に(つまり、Fusion Middleware Controlを使用してOracle Access ManagerをSP統合モジュールとして構成しようとすると)エラーが表示されます。
解決方法
Oracle WebLogic Server環境でのLD_ASSUME_KERNEL
の設定方法について説明している、第3.2.4.3項「SP統合モジュールとしてのOracle Access Managerの統合」を参照してください。
問題
Oracle Access Managerバックエンドを持つ2つのプロバイダ(たとえばIdPとSP2)が構成に含まれ、両方のインスタンスが同一のCookieドメインを使用している場合、シングル・サインオンを試みるとエラーが発生することがあります。
この問題が発生するのは、複数のOracle Access Managerプロバイダが同一のCookieドメインを使用している場合です。
解決方法
Oracle Access Managerインスタンスが異なるCookieドメインを使用するように変更するか、IdP側で異なるバックエンド(LDAPバックエンドなど)を使用することで、問題を解決できます。
問題
Fusion Middleware Controlを使用して、Oracle Access Manager 10gと統合されるようにOracle Identity Federationを構成すると、次のエラーが表示されることがあります。
2009-03-09T21:54:56.354-07:00] [wls_oif1] [INCIDENT_ERROR] [FED-10192] [oracle.security.fed.admin.config.mbeans.OAMConfigUtils] [tid: [ACTIVE].ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <WLS Kernel>] [ecid: 0000HziivsZ7IBT6uBr2EH19hQcU000017,1:5006] [APP: Oracle Identity Federation#11.1.1.1.0] Oracle Access Server SDK could not be initialized
解決方法
Oracle Access Managerおよびアクセス・サーバーSDKで、Oracle Identity Federationの構成を確認します。
問題
Oracle Identity FederationがOracle Access Manager 10gと統合されている場合にユーザーがOAMに保護されたリソースにアクセスしようとすると、次のエラーが表示されることがあります。
Error: oracle.security.fed.event.EventException: com.oblix.access.ObAccessException: Unprotected resource GET used in an ObAuthenticationScheme or ObUserSession constructor
解決方法
このエラーが発生した場合は、ホストIDにOracle Identity Federationポート(たとえばポート7499)が指定されていることを確認します。
この項では、Oracle Identity Federationがインストールされたマシンのオペレーティング・システムの構成に関する問題を説明します。
注意: この項に示した問題の中には、Oracle Identity Federationサーバーのシステム全体に影響がある問題もあれば、特定のフェデレーション・パートナなど特定のコンポーネントにのみ影響がある問題もあります。 |
問題
Oracle Identity Federationサーバーが断続的にクラッシュし、ログ・ファイルに次のエラー・メッセージが記録されることがあります。
java.net.SocketException: Too many open files
このエラーは、ファイル記述子の上限に達している場合に発生します。
解決方法
/etc/security/limits.conf
構成ファイルで指定されているファイル記述子の上限値を増やします。
注意: ファイル記述子の上限が定義されていない場合、サーバーはデフォルト値の1024を使用します。 |
この例では、ファイル記述子の上限値が16Kの値に設定されます。
soft nofile 16384
hard nofile 16384
値を変更したら、マシンを再起動します。
この項では、Oracle Identity Federationの使用時に発生することがある、実行時およびシングル・サインオンに関する問題について説明します。
問題
ユーザーがWS-Federationにより保護されているリソースにブックマークし、サービス・プロバイダがOracle Single Sign-Onバックエンドを使用している場合、後でブックマークにアクセスしようとすると、ユーザーはエラーを受け取ります。
解決方法
SPがOracle Single Sign-Onバックエンドを使用している場合、WS-Federationにより保護されたリソースへの直接アクセスはサポートされません。このシナリオの場合、リソースにブックマークして、後でアクセスしようとしないでください。
問題
電子メール・アドレスなどの名前IDフォーマット(mailなどの属性値にマップされた)の使用時に、最初はユーザーはSSOを実行でき、IdPとSPでフェデレーション・レコードが生成されます。
ただし、属性(mail)の値は変更される可能性があります。変更後も、IdPはアサーション内で古い名前ID値(この場合は古い電子メール・アドレス)を送り続けるため、SSOが失敗します。
解決方法
Oracle Identity Federation管理者は、新しい属性値を反映するようにフェデレーション・レコードを更新する必要があります。