Oracle自定义工作列表portlet中的验证服务中的令牌错误无效

时间:2014-12-03 07:14:37

标签: oracle authentication token webcenter

我正在使用带有SOA / BPEL的Oracle WebCenter Portal。我已经按照以下指南创建了一个自定义工作列表应用程序(portlet):

Oracle Documentation

它显示为portlet,因此部署很好。当我访问此portlet页面时,它会给我以下错误。

  

ORABPEL-30503:验证服务中的令牌错误无效。无效   验证服务中的令牌错误。收到无效令牌   getTokenType。验证是否传递了正确的令牌

这是我的代码片段,以及下面的完整堆栈跟踪。

Map<IWorkflowServiceClientConstants.CONNECTION_PROPERTY, String> properties = new HashMap<IWorkflowServiceClientConstants.CONNECTION_PROPERTY, String>();
properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.CLIENT_TYPE, WorkflowServiceClientFactory.SOAP_CLIENT);
properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.SOAP_END_POINT_ROOT, "http://<hostname>:<port>");
IWorkflowServiceClient  wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.SOAP_CLIENT,properties, null);
ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();
IWorkflowContext wfCtx = querySvc.authenticate(userName,password.toCharArray(),null);

我认为代码是正确的,因为如果我使用不正确的凭据,它会给出“验证用户时出错”。但是,当我使用正确的凭据时,它会给出:

SEVERE: <.> getTokenType: invalid token: a0a4daf4-33ad-4bdf-91d0-c7e22e70efc9;;W3JtvUSwovCa7zQLbYhVjAB8yAfYcPrl6iECyPso9bjnlUp6qzy50EApOPEQmV/3nKWySh+41yNhD4Rl8Ati72glbm1DL6wm/6Kc0nwkXCZaBFE13wFClSdg4m1a4CBqeAEC6TWNdV45mB9popu3phvDTl8LKbfq3mBv/MHTAWSmY/XnqSF+nVtH/Hq3wTOLMQ73aonamjhuKGDzVfFk6pogBKXBOqPZnbhTjfLeu/oGeBjLkwWdIC0F0wrohjgL SEVERE: <.> Invalid Token Error in Verification Service. Invalid Token Error in Verification Service. Received invalid token in getTokenType. Verify that correct token is passed.

ORABPEL-30503

Invalid Token Error in Verification Service. Invalid Token Error in Verification Service. Received invalid token in getTokenType. Verify that correct token is passed.

    at oracle.bpel.services.workflow.verification.impl.Token.getTokenType(Token.java:545)   at oracle.bpel.services.workflow.verification.impl.Token.<init>(Token.java:188)     at oracle.bpel.services.workflow.verification.impl.WorkflowContext.getWorkflowContextFromJAXBObject(WorkflowContext.java:795)   at oracle.bpel.services.workflow.verification.impl.WorkflowContext.getWorkflowContextFromElement(WorkflowContext.java:746)  at oracle.bpel.services.workflow.query.client.AbstractDOMTaskQueryServiceClient.authenticate(AbstractDOMTaskQueryServiceClient.java:186)    at oracle.bpel.services.workflow.query.client.AbstractDOMTaskQueryServiceClient.authenticate(AbstractDOMTaskQueryServiceClient.java:205)    at com.kpit.cams.UAPWorklistMain.main(UAPWorklistMain.java:329)

1 个答案:

答案 0 :(得分:1)

Oracle支持文档的解决方案为我解决了这个问题。总之,服务器和jdev之间的jar不匹配导致了这个问题。

=============================================== ==========================

您无法成功获取BPM上下文。检索上下文时不会出现异常,但在尝试使用它时,您会看到异常:BPM-70684

异常exception.70684.type:error exception.70684.severity:2 exception.70684.name:无效的身份验证上下文。 exception.70684.description:已传递无效的身份验证上下文。 exception.70684.fix:确保传递有效的身份验证上下文。

已知以下异常与同一问题相关联:由java的oracle.bpel.services.workflow.verification.impl.WorkflowContext.hashCode(WorkflowContext.java:583)中的java.lang.NullPointerException引起。 util.HashMap.get(HashMap.java:300)at oracle.bpel.services.workflow.common.ThreadLocalCache.isContextValidated(ThreadLocalCache.java:146)at oracle.bpel.services.workflow.verification.impl.VerificationService.validateNotNullWorkflowContext( VerificationService.java:1824)at oracle.bpel.services.workflow.verification.impl.VerificationService.validateContext(VerificationService.java:1806)

使用adminContext代表用户weblogic进行身份验证时出错[user = null] [sessionKey = null] [token = null] [requester = null] [objectId = null]&lt;&lt;。&gt;验证服务无法解析用户身份。在身份库中找不到用户null。工作流上下文令牌在请求中不能为空。

ORABPEL-30511

验证服务无法解析用户身份。在身份库中找不到用户null。工作流上下文令牌在请求中不能为空。

at oracle.bpel.services.workflow.verification.impl.LocalCacheManager.lookupUser(LocalCacheManager.java:600)

引起:ORABPEL-10501

非法论证。非法论证。这是因为一个意外的值(可能为null)作为参数传递。检查错误堆栈并确定错误原因。如果无法修复错误,请与Oracle支持服务联系。

at oracle.tip.pc.services.identity.js.AuthorizationServiceImpl.lookupUser(AuthorizationServiceImpl.java:236)at oracle.tip.pc.services.identity.jps.IdentityServiceImpl.lookupUser(IdentityServiceImpl.java:183)at at oracle.bpel.services.workflow.verification.impl.LocalCacheManager.lookupUser(LocalCacheManager.java:596)

我们正在ADF应用程序中嵌入BPM任务流列表。它给出以下错误infra]&lt;。&gt;验证服务中的令牌错误无效。[[验证服务中的无效令牌错误。在null中收到无效令牌。验证是否传递了正确的令牌。 ORABPEL-30503

此外,如果您从上下文中记录用户名,您会注意到它为空。原因

客户端应用程序和服务器上的bpm-services.jar可能不匹配。客户端和服务器上使用的SOA / BPM相关的jar必须相同,否则可能会出现意外问题。

解决方案

从服务器复制bpm-services.jar 将客户端应用程序上的bpm-services.jar替换为服务器上的bpm-services.jar 确保在应用任何修补程序后,在客户端应用程序中替换服务器上的jar。 这也适用于在JDeveloper中使用jar,由于未在dev和server计算机上应用补丁,这些jar可能会变得不同步。您可能需要将位于此处的bpm-services.jar替换为位于此处的jDeveloper / soa / modules / oracle.soa.workflow_11.1.1 / bpm-services.jar [soa_install_dir] /soa/modules/oracle.soa.workflow_11 .1.1 / BPM-services.jar。