疑難排解一般問題

使用 E-Business Suite Asserter 整合 Oracle E-Business Suite 與 OCI IAM 時,可能會發生以下幾種錯誤。

解決權限不足錯誤

在 OCI IAM 認證之後,系統會將使用者重新導向回 Oracle E-Business Suite,並顯示錯誤訊息您沒有目前作業的足夠權限,並提示使用者重新登入。

一般而言,當 Oracle E-Business Suite 應用程式發出此錯誤時,表示 Cookie 設定的網域不正確。若要確認,請檢查 E-Business Suite Asserter 除錯日誌 (<HOME DIR>/ebsasserter.log)。「E-Business Suite 宣告器」除錯日誌顯示 sessionCookieDomain 的值不正確。CookieDomain 已設為 .oracle.com

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

ICX_PARAMETERS.SESSION_COOKIE_DOMAIN 不得設為任何類型的值。您必須更新 ICX_PARAMETERS 中的 SESSION_COOKIE_DOMAIN 設定。

  1. 更新 ICX_PARAMETERS 中的 SESSION_COOKIE_DOMAIN 值:
    SQL> select SESSION_COOKIE_DOMAIN from ICX_PARAMETERS;
    
    SESSION_COOKIE_DOMAIN
    ------------------------------
    .oracle.com
  2. ICX_PARAMETERS 中的 session_cookie_domain 設為 NULL
    update ICX_PARAMETERS set SESSION_COOKIE_DOMAIN = NULL;
    commit;
  3. 重新啟動所有服務。
  4. 重新測試問題。

登出時解決內部伺服器錯誤

當您從 Oracle E-Business Suite 登出時,瀏覽器會發出內部伺服器錯誤錯誤訊息。

此問題是因為 Oracle E-Business Suite 端的 AppsLogoutRedirect.java 版本較舊。

檢查 Oracle E-Business Suite 端的 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 Release 12 重要修補程式更新 (2013 年 1 月或更高版本),才能修正此問題。此重要修補程式更新可讓 AppsLogoutRedirect.java 利用 APPS_SSOAPPS_AUTH_AGENT 設定檔。查看知識文件 (2018 年 7 月) (文件 ID 2379675.1) 以取得套用此修正程式的所有詳細資訊。

修正時間同步問題

當您存取 E-Business Suite Asserter 應用程式 URL 時,Oracle E-Business Suite 應用程式登入流程造成內部伺服器錯誤。

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

E-Business Suite Asserter 網域日誌如下所示:

####<Sep 23, 2018 6:53:31,380 PM AST> <Error> <HTTP> <ebshost01.oracle.com>
<AdminServer> <[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-
tuning)'> <<WLS Kernel>> <> <0b38f1ae-a3cb-48f6-80d9-00e3f3bdb263-000000a0>
<1537718011380> <[severity-value: 8] [rif: 0] [partition-id: 0] [partition-name:
DOMAIN]> <BEA-101020> <[ServletContext@44159983[app:ebs module:ebs.war
path:null spec-version:3.1]] Servelet failed with an Exception

E-Business Suite Asserter 日誌的外觀如下:

FINE: validateToken return with result {"user_result":"America\/New_York",
"at_hash":"1A3gT4BT0WoWCTLE3IFa5A","sub":"john.doe@oracle.com","user_locale":"en",
"idp_name":"localIDP","idp_guid":"localIDP","a mr":["USERNAME_PASSWORD"],
"iss":"https: \/\/identity.oraclecloud.com\/","user_tenantname":"idcs-a61feab148e248508205cd98cdea4232",
"client_id":"67179f2609ab46309a75e5ca1f582a53","sid":"18ee87ea-04cf-4469-a565-48ccc763caf9",
"authn_strength":"2","azp":"67179f2609ab46309a75e5ca1f582a53","auth_time":"1536180435",
"session_exp":1537715029,"user_lang":"en","exp":1536209235,"iat":1536180437"idp_type":"LOCAL",
"tenant":"idcs-a61feab148e248508205cd98cdea4232","jti":"ed7be32b-d4e1-4e72-9868-6df142f07c6b",
"user_displayname":"John Doe","sub_mappingattr":"userName","tok_type":"IT",
"aud":["https:\/\/identity.oraclecloud.com\/","67179f2609ab46309a75e5ca1f582a53"],
"user_id":"63bf3d3f96094a66a6b7714218338116"}

session_exp 設為 1537715029。使用 EpochConverter 將目前的 Unix Epoch 時間轉換為人類可讀取的日期和時間。因此,記號中的到期時間會設為 Sunday, September 23, 2018 3:03:49 PM GMT。不過,「E-Business Suite 宣告器」網域日誌中的時間為 Sep 23, 2018 6:53:31,380 PM AST。請注意,格林威治標準時間比大西洋標準時間早 4 小時。因此,時間集為 Sep 23, 2018 10:53:31 PM GMT。部署 E-Business Suite Asserter 的系統未與 OCI IAM 同步,因此 OCI IAM 所傳送的權杖實際上不在有效期間內,因此發生錯誤:權杖已過期

確定部署 E-Business Suite Asserter 之系統的日期和時間與 NTP 伺服器的時間同步,因此 OCI IAM 主機。

處理 Java 錯誤 ExceptionInInitializerError

當您存取 E-Business Suite Asserter 應用程式 URL 時,Oracle E-Business Suite 應用程式會發出 java.lang.ExceptionInInitializerError 錯誤。

「E-Business Suite 宣告器」除錯日誌顯示下列 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

當您存取 E-Business Suite Asserter 應用程式 URL 時,Oracle E-Business Suite 應用程式會發出 java.lang.RuntimeException

「E-Business Suite 宣告器」除錯日誌顯示下列 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 中建立的資料來源名稱。

修正深層連結問題

在 OCI IAM 認證之後,使用者將被重新導向回 Oracle E-Business Suite,並提示使用者重新登入。

這是因為深層連結沒有作用。

檢查是否已設定 whitelist.urls 橋接器特性。如果問題持續存在,請在 whitelist.urls 組態中明確指定連接埠號碼。例如,whitelist.urls=http://ebs.oracle.com:80/OA_HTML…。您也可以檢查 weblogic.xml 檔案中 E-Business Suite Asserter App 的 JSESSION ID Cookie 名稱。如果 WebLogic 中具有相同 Cookie 名稱的任何其他 Web 應用程式,將會發生衝突。

登出時發生問題

如果在登出過程中發現問題,請驗證 OCI IAM 中的登出後重新導向 URL 參數值和 bridge.properties 檔案中的 post.logout.url 參數值。

bridge.properties 檔案中的 post.logout.url 是選擇性的參數,依照預設,您不需要提供值。您可以使用此參數,讓「E-Business Suite 宣告器」應用程式在「E-Business Suite 宣告器」完成登出處理作業之後,將使用者瀏覽器重導至指定的 URL。

如果啟用,bridge.properties 檔案中的 post.logout.url 值必須與 OCI IAM 中 E-Business Suite Asserter 應用程式的登出後重新導向 URL 參數值相符。

  1. 開啟 OCI IAM 中的 E-Business Suite Asserter 應用程式,然後更新登出後重新導向 URL 值。
  2. 開啟 ebs.war 檔案、更新 bridge.properties 檔案、重新產生 war 檔案,然後將檔案重新部署至 WebLogic 伺服器。確定此參數的值與 OCI IAM 中的登出後重新導向 URL 參數相符。