疑難排解一般問題

以下是使用 E-Business Suite 宣告器整合 Oracle E-Business Suite 與 Oracle Identity Cloud Service 時可能發生的一些錯誤。

解決權限不足錯誤

Oracle Identity Cloud Service 認證之後,使用者不需存取 Oracle E-Business Suite,系統會將錯誤訊息重新導向回 Oracle E-Business Suite,您沒有目前作業的足夠權限,並提示使用者再次登入。

一般來說,當 Oracle E-Business Suite 應用程式發出此錯誤時,表示 Cookie 是以不正確的網域設定。若要確認,請檢查 E-Business Suite 宣告器除錯日誌 (<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. session_cookie_domain 設為 ICX_PARAMETERS 中的 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 版本 12 重要修補程式更新 (2013 年 1 月或更高版本) 以修正此問題。這次重要修補程式更新可讓 AppsLogoutRedirect.java 充分運用 APPS_SSOAPPS_AUTH_AGENT 設定檔。請查看知識文件 (2018 年 7 月) (文件 ID 2379675.1),瞭解套用此修正程式的所有詳細資訊。

修正時間同步問題

當您存取 E-Business Suite 宣告器應用程式 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 宣告器網域日誌如下:

####<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 宣告器日誌看起來如下:

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 Asserter 網域日誌中的時間是 Sep 23, 2018 6:53:31,380 PM AST。請注意,格林威治標準時間比大西洋標準時間還 4 小時。因此,時間集是 Sep 23, 2018 10:53:31 PM GMT。部署 E-Business Suite 宣告器的系統不會及時與 Oracle Identity Cloud Service 同步,因此 Oracle Identity Cloud Service 所傳送的權杖會有效地退出有效期間,因此權杖到期發生錯誤。

確定部署 E-Business Suite 宣告器之系統的日期和時間與 NTP 伺服器同步,因此 Oracle Identity Cloud Service 主機。

處理 Java 錯誤 ExceptionInInitializerError

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

「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 宣告器應用程式 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 中建立的資料來源名稱。

修正深層連結問題

Oracle Identity Cloud Service 認證之後,使用者不需存取 Oracle E-Business Suite,系統會將該使用者重新導向回 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 應用程式,就會衝突。

登出期間的問題

如果您在登出處理作業期間發現問題,請驗證 Oracle Identity Cloud Service 中的 Post Logout Redirect URL 參數值,以及 bridge.properties 檔案中的 post.logout.url 參數值。

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

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

  1. 開啟 Oracle Identity Cloud Service 中的 E-Business Suite 宣告器應用程式,並更新登出後重新導向 URL 值。
  2. 開啟 ebs.war 檔案、更新 bridge.properties 檔案、重新產生 War 檔案,然後將檔案重新部署至 WebLogic 伺服器。請確定此參數的值符合 Oracle Identity Cloud Service 中的登出後重導 URL 參數。