解决常见问题

使用 E-Business Suite 断言程序将 Oracle E-Business Suite 与 Oracle Identity Cloud Service 集成时可能会遇到一些错误。

解决权限不足错误

Oracle Identity Cloud Service 验证后,用户将重定向回 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. 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 Critical Patch Update Jan 2013 或更高版本来修复此问题。通过此重要补丁更新,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 纪元时间转换为人类可读的日期和时间。因此,令牌中的失效时间设置为 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 断言器的系统与 Oracle Identity Cloud Service 不同步,因此 Oracle Identity Cloud Service 传递的标记有效性超出有效期,因此错误“已失效”

确保部署 E-Business Suite 断言器的系统上的日期和时间与 NTP 服务器及时同步,从而与 Oracle Identity Cloud Service 主机同步。

处理 Java 错误 ExceptionInInitializerError

在访问 E-Business Suite Asserter 应用程序 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 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 中创建的数据源名称相对应。

修复深度链接问题

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 断言程序应用程序的 JSESSION ID Cookie 名称。如果 WebLogic 中有任何其他具有相同 Cookie 名称的 Web 应用程序,则会发生冲突。

注销期间的问题

如果在注销过程中发现问题,请验证 Oracle Identity Cloud Service 中的注销后重定向 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 断言程序应用程序的注销后重定向 URL 参数的值匹配。

  1. Oracle Identity Cloud Service 中打开 E-Business Suite 断言程序应用程序并更新注销后重定向 URL 值。
  2. 打开 ebs.war 文件,更新 bridge.properties 文件,重新生成 War 文件,然后将该文件重新部署到 WebLogic 服务器。确保此参数的值与 Oracle Identity Cloud Service 中的注销后重定向 URL 参数匹配。