需要 Worklight 适配器身份验证

Posted

技术标签:

【中文标题】需要 Worklight 适配器身份验证【英文标题】:Worklight Adapter authentication required 【发布时间】:2013-12-04 13:01:10 【问题描述】:

我正在使用部署在 WebSphere Liberty 8.5.5.0 上的 Worklight 6.0.0.1,并且我的应用程序使用 2 个 HTTP 适配器。

在第一个适配器中,我放置了登录和注销功能(基于表单身份验证)。 在第二个适配器中,我放置了一些其他程序。

所以我的问题如下:

当我在 WebSphere 上部署 Worklight (.war) 并在其他服务器 (Tomcat) 上包含 Web 服务的其他 WAR 文件时,一切顺利。

但是,当我在同一台服务器 (WebSphere Liberty) 上部署 worklight 的 WAR 和包含我的 Web 服务的 WAR 时,第二个适配器(不包含登录功能的那个)出现问题。在第二个适配器的每个调用过程中,我都会收到“authentication required”作为响应。

但是当我在第一个适配器中调用一个过程时,它会返回正确的响应。

有什么想法吗?没搞清楚问题

我补充说我在两个适配器中调用相同的 Web 服务。

这是我得到的日志:

"status":200,"invocationContext":null,"invocationResult":"responseID":"64","statusCode":200,"result":,"errors":["authentication required"],"isSuccessful":true,"statusReason":"OK","responseHeaders":"Content-Language":"en-US","Transfer-Encoding":"chunked","Date":"Thu, 05 Dec 2013 06:13:15 GMT","Content-Type":"application/json;charset=UTF-8","X-Powered-By":"Servlet/3.0","success":0,"totalTime":280,"responseTime":271

【问题讨论】:

是否有更完整的错误日志可用?如果是这样,请用它编辑问题。 【参考方案1】:

当您在第一个适配器中调用一个过程时,它会调用 Web 服务吗? 如果没有,我假设只有第二个适配器正在尝试访问 Web 服务。

考虑到这一点,我猜您的 Tomcat 服务器没有保护 Web 服务。这意味着您无需任何身份验证即可访问您的网络服务。

另一方面,WAS 或 Liberty 可以启用应用程序安全性。这意味着,如果您尝试访问部署在 WAS 或 Liberty 上的 Web 服务,系统将提示您进行身份验证。

【讨论】:

感谢您的回复,但我在第一个适配器中调用了相同的 Web 服务【参考方案2】:

由于它适用于 WAS 和 Tomcat,因此该问题似乎仅在 Liberty Profile 下发生。在这种情况下,只有 Worklight 跟踪和 Liberty Profile 安全跟踪可以让我们了解问题的可能原因。

【讨论】:

以上是关于需要 Worklight 适配器身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用适配器身份验证的 Worklight 推送通知不起作用

IBM Worklight 6.0 - 如果客户端注销/登录,具有基本身份验证的适配器不会更新身份验证标头

IBM Worklight:基于适配器的身份验证成功后未获得响应

使用基于 Worklight 适配器的身份验证时如何获取正在注销的用户的 userIdentity

worklight http 适配器和 NTLM 身份验证

删除 Worklight Adapter 中的 Cookie:多个会话使用基于相同适配器的身份验证