EBS Asserterの既知の問題

IAMでEBS Asserterを操作するための既知の問題。

権限不足エラーの解決

IAM認証後、Oracle EBSへのアクセスを取得するかわりに、ユーザーはエラー・メッセージYou have insufficient privileges for the current operation.でEBSにリダイレクトされます再度サインインするように求められます。

通常、Oracle EBSアプリケーションがこのエラーをスローする場合、不正なドメインでCookieが設定されています。これを確認するには、<HOME DIR>/ebsasserter.logにあるEBS Asserterデバッグ・ログを確認します。たとえば

Aug 22, 2018 2:26:34 PM oracle.apps.fnd.ext.common.EBiz init
FINE: Ebiz init(): sessionCookieDomain =.oracle.com ; protocol=https:; ssoCookieName= ORASSO_AUTH_HINT

この例では、EBS Asserterデバッグ・ログに、sessionCookieDomainに正しくない値が.oracle.comに設定されていることが示されています。

ICX_PARAMETERS.SESSION_COOKIE_DOMAINには値を設定しないでください。

  1. ICX_PARAMETERSSESSION_COOKIE_DOMAIN設定を更新します
    SQL> select SESSION_COOKIE_DOMAIN from ICX_PARAMETERS;
    
    SESSION_COOKIE_DOMAIN
    ------------------------------
    .oracle.com
  2. ICX_PARAMETERSsession_cookie_domainNULLに設定します
    update ICX_PARAMETERS set SESSION_COOKIE_DOMAIN = NULL;
    commit;
  3. すべてのサービスを再起動します。
  4. 問題を再テストします。

ログアウト中の内部サーバー・エラーの解決

Oracle EBSからログアウトすると、ブラウザによってエラー・メッセージInternal Server Errorがスローされます。

この問題は、Oracle EBS側に古いバージョンのAppsLogoutRedirect.javaがあるために発生します。

たとえば、Oracle EBSのAppsLogoutRedirect.javaのヘッダーをチェックして、バージョン番号を確認します。

adident Header $JAVA_TOP/oracle/apps/fnd/sso/AppsLogoutRedirect.class
$Header AppsLogoutRedirect.java 120.10.12010000.7 2010/01/19 20:18:52 rsantis ship $

これを解決するには、最新のOracle E-Business Suiteリリース12 Critical Patch Update Jan 2013、またはより新しいバージョンを適用します。このクリティカル・パッチ・アップデートにより、AppsLogoutRedirect.javaAPPS_SSOおよびAPPS_AUTH_AGENTプロファイルを利用できます。このパッチの適用方法の詳細は、ナレッジ・ドキュメント(2018年7月)(ドキュメントID 2379675.1)を確認してください。

時間同期の問題の修正

EBS AsserterアプリケーションURLにアクセスしているときに、Oracle EBSアプリケーションのサインイン・フローにより内部サーバー・エラーが発生しました。

HTTPヘッダー・トレースは次のようになります

GET https://xxxxxxxxxxxxxxxxxx.oracle.com:7002/ebs/response?code=AQIDBAVcZbun_M5qU4-t9LUCYDjAOgWYiDOrf1Kb5ndbWAEYd05C-uxDfSwP8Ejfn51WT-gTuYj6bLFFYAFHQEqgYy26MTEgRU5DUllQZZIIFFVElPTl9LRVkxNCB7djF9NCAFFFABCDEF= HTTP/1.1

Error 500--Internal Server Error
From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:
10.5.1 500 Internal Server Error
The server encountered an unexpected condition which prevented it from fulfilling the request

session_expは、1537715029に設定されています。EpochConverterを使用して、現在のUnixエポック時間をわかりやすい日時に変換します。つまり、トークンの有効期限は、Sunday, September 23, 2018 3:03:49 PM GMTに設定されています。ただし、EBS Asserterドメイン・ログの時間はSep 23, 2018 6:53:31,380 PM ASTです。グリニッジ標準時は、大西洋標準時より4時間進んでいることに注意してください。つまり、時間セットはSep 23, 2018 10:53:31 PM GMTです。

EBS AsserterがデプロイされているシステムはIAMと時間同期されておらず、その結果、IAMによって渡されたトークンは有効期間外となり、トークン期限切れエラーになります。

EBS Asserterがデプロイされているシステムの日時が、NTPサーバーおよびIAMホストと時間同期されていることを確認してください。

JavaエラーExceptionInInitializerErrorの処理

EBS AsserterアプリケーションURLにアクセスしているときに、Oracle EBSアプリケーションがjava.lang.ExceptionInInitializerErrorエラーをスローします。

EBS Asserterデバッグ・ログには、次のJavaエラーが表示されます

<Feb 26, 2019 2:17:16,884 PM PST> <Error> <HTTP> <BEA-101020> 
<[ServletContext@2100554246[app:ebs module:ebs.war path:null spec-version:3.1]] Servlet failed with an Exception
java.lang.ExceptionInInitializerError
at com.oracle.ebs.sso.ConnectionProvider.getConnection(ConnectionProvider.java:36)
at com.oracle.ebs.sso.RequestWrapperFilter.doFilter(RequestWrapperFilter.java:34)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78

これは、bridge.propertiesファイルの設定が間違っているために発生します。bridge.propertiesファイルを確認し、必要な構成が含まれていることをチェックします。また、bridge.propertiesファイルのwallet.pathで指定されたパスが有効であることを確認します。

JavaエラーRuntimeExceptionの処理

EBS AsserterアプリケーションURLにアクセスしているときに、Oracle EBSアプリケーションがjava.lang.RuntimeExceptionエラーをスローします。

EBS Asserterデバッグ・ログには、次のJavaエラーが表示されます

<Feb 26, 2019 2:01:33,454 PM PST> <Error> <HTTP> <BEA-101020> 
<[ServletContext@1207779454[app:ebs module:ebs.war path:null spec-version:3.1]] Servlet failed with an Exception
java.lang.RuntimeException: javax.naming.NameNotFoundException: Unable to resolve 'visionDS1'. Resolved ''; remaining name 'visionDS1'
at com.oracle.ebs.sso.ConnectionProvider.getConnection(ConnectionProvider.java:42)
at com.oracle.ebs.sso.RequestWrapperFilter.doFilter(RequestWrapperFilter.java:34)

これを解決するには、ebs.ds.name値セットをWebLogicで作成したデータソース名と同じ値に設定します。

ディープ・リンクの問題の修正

IAM認証後、Oracle EBSへのアクセスを取得するかわりに、ユーザーはエラー・メッセージYou have insufficient privileges for the current operation.でEBSにリダイレクトされます再度サインインするように求められます。

これは、ディープ・リンクが機能していないために発生する可能性があります。

whitelist.urlsブリッジ・プロパティが構成されていることを確認します。問題が解決されない場合は、whitelist.urls構成でポート番号を明示的に指定します。たとえば、whitelist.urls=http://ebs.oracle.com:80/OA_HTML…です。

また、weblogic.xmlファイルで、E-Business Suite AsserterアプリケーションのJSESSION ID Cookie名を確認します。WebLogicに同じCookie名の他のWebアプリケーションがある場合、競合が発生します。

サインアウト中の問題

サインアウト・プロセス中に問題が発生した場合は、IAMの「ログアウト後のリダイレクトURL」パラメータ値およびbridge.propertiesファイルのpost.logout.urlパラメータ値を確認します。

bridge.propertiesファイルのpost.logout.urlは、オプション・パラメータであり、デフォルトでは値を指定する必要はありません。このパラメータを使用して、EBS Asserterがサインアウト・プロセスを完了した後に、EBS Asserterアプリケーションがユーザー・ブラウザを指定されたURLにリダイレクトします。

有効な場合、bridge.propertiesファイルのpost.logout.urlの値は、IAMのEBS Asserterアプリケーションの「ログアウト後のリダイレクトURL」パラメータの値と一致する必要があります。

  1. IAMでEBS Asserterアプリケーションを開き、ログアウト後のリダイレクトURLの値を更新します。
  2. ebs.warファイルを開き、bridge.propertiesファイルを更新し、warファイルを再生成して、そのファイルをWebLogic Serverに再デプロイします。このパラメータの値が、IAMの「ログアウト後のリダイレクトURL」パラメータと一致していることを確認します。

クライアント認証で無効なクライアント・エラーが発生しました

invalid_clientを含むエラーが発生し、次のようなクライアント認証が失敗しました。

<Error> <oracle.security.jps.idcsbinding.shared.AuthenticationManagerImpl> <BEA-000000> <getting error from server>

oracle.security.jps.idcsbinding.shared.AuthenticationManagerImpl clientCredentials

SEVERE: {"error":"invalid_client","error_description":"Client authentication failed.","ecid":"xxxx-xxxx-xxxx-xxxx-xxxx-xxxx"}
  1. IAM機密アプリケーションで生成されたクライアントIDおよびクライアント・シークレットを確認してください。
  2. 正しいクライアントIDおよびクライアント・シークレットを使用してウォレット・ファイルを再生成します。
  3. Weblogic Serverにasserter.warファイルを再デプロイします。

Oracle EBSコア・プロファイルを編集できない

Oracle EBSコア・プロファイルを編集できないというエラーが表示されます。これを解決するには:

  1. Oracle EBSで、Oracle EBSの「Oracle Applications管理」ページに移動します。「コア・サービス」タブをクリックし、「プロファイル」タブをクリックします。
  2. Oracle EBSアプリケーションに値が含まれていない場合、「編集」ボタンは無効になります。
  3. 「プロファイルの定義」をクリックし、プロファイル値を入力します。

EBS Asserterが認可エラーでOracle EBSに接続できない

次のメッセージが表示されます
The Applications user,
          EBSASSERTER is not authorized to access the database
こんな感じです。
<Error> <Deployer> <wahatast> <AdminServer> <[STANDBY] ExecuteThread: '7' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <c596f25b-e3d0-42e2-81a9-682c623d2d1c-00000162> <1677049594045> <[severity-value: 8] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-149265> 
<Failure occurred in the execution of deployment request with ID "24806329095989206" for task "weblogic.deploy.configChangeTask.2" on [partition-name: DOMAIN]. 
Error is: "weblogic.application.ModuleException: weblogic.common.ResourceException: ORA-20001: Oracle error -20001: The Applications user, EBSASSERTER is not authorized to access the database. has been detected in FND_SECURITY_PKG.FND_ENCRYPTED_PWD_X.

このエラーは、EBSアプリケーションに存在するアサータ・ユーザーに正しいロールが割り当てられていない場合に発生します。Oracle EBSアプリケーションにサインインし、アサータ・ユーザーにAPPS_CONNECT_SCHEMAロールを指定します。

WeblogicでのEBS AsserterのJDBCアクティブ接続の使用

EBS Asserterは、WebLogicサーバー内のJNDIサービスを使用して、Oracle EBS DBとのDB接続を作成します。時間の経過とともに、接続数は増え続け、非アクティブ・セッションはクローズされます。これにより、接続プールがいっぱいになり、Oracle EBS DatabaseThisで新しい接続を作成できなくなると、EBS Asserterで接続エラーが発生します。

<Error> <HTTP> <BEA-101017> <[ServletContext@784524422[app:ebs module:ebs.war path:null spec-version:3.1]] Root cause of ServletException.
weblogic.jdbc.extensions.PoolLimitSQLException: weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool PAVCRIDS to allocate to applications, please increase the size of the pool and retry..
at weblogic.jdbc.common.internal.JDBCUtil.wrapAndThrowResourceException(JDBCUtil.java:280)
at weblogic.jdbc.pool.Driver.connect(Driver.java:154)
at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:665)
at weblogic.jdbc.jts.Driver.connect(Driver.java:129)
at weblogic.jdbc.common.internal.WLDataSourceImpl.getConnectionInternal(WLDataSourceImpl.java:655)

WebLogicサーバーの再起動は、アサータを新しい接続で使用できるようにするための一時的な修正として機能します。

これを永続的に修正するには、管理コンソールの「JDBCデータ・ソース: 構成: 接続プール」ページでInactive Connection Timeoutの値を指定します。次の値を設定したとき
Inactive
        Connection Timeout
WebLogicサーバーは、指定した秒数の間に予約された接続に対してアクティビティが発生しなかった場合、接続をデータ・ソースに強制的に戻します。0(デフォルト値)に設定した場合、この機能は無効になります。
正の値を設定するには
Inactive Connection
        Timeout
:
  1. Weblogic Server管理コンソールにサインインします。
  2. 「データ・ソース」に移動します。
  3. 変更するデータ・ソース名を検索し、「データ・ソース」をクリックします。
  4. 「接続プールの構成」をクリックします。
  5. 「Advanced」タブを展開します。
  6. 「非アクティブ接続タイムアウト」を新しい値に更新します。

    たとえば、「Inactive Connection Timeout」は900 (15分)です。

ノート

これらの構成は、各顧客の環境に固有です。負荷テストを環境で実行し、結果に基づいて構成を調整することをお薦めします。

EBS Asserterのデータベース・エラー

EBS Asserterのデータベースへの接続がinvalid table nameで失敗します。たとえば
Test "select count * from select 1 from fnd_nodes;" set up for pool "EbsDS1" failed with exception: "java.sql.SQLSyntaxErrorException: ORA-00903: invalid table name.

このエラーは、名前の不一致が原因で発生します。bridge.propertiesebs.ds.nameパラメータが、EBSAsserterのWebLogicで作成されたデータソースの名前と同じではありません。

これを解決するには、ebs.ds.name値セットをWebLogicで作成したデータソース名と同じ値に設定します。