解决常见问题
以下是使用 E-Business Suite 断言器将 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 设置。
解决注销时出现的内部服务器错误
从 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_SSO
和 APPS_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 断言程序日志如下所示:
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 Asserter 域日志中的时间为 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 传递的令牌实际上已超出有效期,因此错误 "Token Expired" 。
确保部署 E-Business Suite Asserter 的系统上的日期和时间与 NTP 服务器及时同步,因此与 OCI IAM 主机同步。
处理 Java 错误 ExceptionInInitializerError
当您访问 E-Business Suite Asserter 应用程序 URL 时,Oracle E-Business Suite 应用程序会抛出 java.lang.ExceptionInInitializerError 错误。
E-Business Suite 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
当您访问 E-Business Suite Asserter 应用程序 URL 时,Oracle E-Business Suite 应用程序将抛出 java.lang.RuntimeException 。
E-Business Suite 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 中创建的数据源名称相对应。
修复深层链接问题
在 OCI IAM 验证之后,用户将重定向回 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 应用程序的 JSESSION ID Cookie 名称。如果 WebLogic 中存在具有相同 cookie 名称的任何其他 Web 应用程序,则会发生冲突。
注销期间的问题
如果在注销过程中发现问题,请验证 OCI IAM 中的注销后重定向 URL 参数值和 bridge.properties
文件中的 post.logout.url 参数值。
bridge.properties
文件中的 post.logout.url 是可选参数,默认情况下不需要提供值。使用此参数可以使 E-Business Suite Asserter 应用程序在 E-Business Suite Asserter 完成注销过程后将用户浏览器重定向到指定的 URL。
如果启用,bridge.properties
文件中 post.logout.url 的值必须与 OCI IAM 中 E-Business Suite Asserter 应用程序的 Post Logout Redirect URL 参数的值匹配。
- 在 OCI IAM 中打开 E-Business Suite Asserter 应用程序并更新注销后重定向 URL 值。
- 打开
ebs.war
文件,更新bridge.properties
文件,重新生成 war 文件,然后将该文件重新部署到 WebLogic 服务器。确保此参数的值与 OCI IAM 中的注销后重定向 URL 参数匹配。