首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IBM Worklight 6.0 -带基本身份验证的适配器在客户端注销/登录时不会更新身份验证头

IBM Worklight 6.0 -带基本身份验证的适配器在客户端注销/登录时不会更新身份验证头
EN

Stack Overflow用户
提问于 2013-07-21 22:57:09
回答 1查看 1K关注 0票数 2

我有一个使用基于适配器的身份验证的WorklightV6.0应用程序。

适配器是一个HTTP适配器,它使用Basic Auth调用后端REST服务。

适配器和后端服务之间没有会话或cookies。在我的适配器描述符中,我将cookiePolicy设置为IGNORE_COOKIES。从适配器到后端的每个请求都使用该请求上的基本auth头进行身份验证。

适配器的每个过程都将connectAs设置为: endUser。

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<wl:adapter name="MyAdapter" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wl="http://www.worklight.com/integration" xmlns:http="http://www.worklight.com/integration/http">

<displayName>MyAdapter</displayName>
<description>MyAdapter</description>
<connectivity>
    <connectionPolicy xsi:type="http:HTTPConnectionPolicyType" cookiePolicy="IGNORE_COOKIES">
        <protocol>http</protocol>
        <domain>localhost</domain>
        <port>9080</port>
        <!-- Following properties used by adapter's key manager for choosing            
        <authentication>
            <basic />
        </authentication>
    </connectionPolicy>
    <loadConstraints maxConcurrentConnectionsPerNode="2" />
</connectivity>

<procedure name="submitAuthentication"></procedure>

<procedure connectAs="endUser" name="getCurrentUser"
    securityTest="MyAdapter-securityTest" />
</wl:adapter>

这一切都很好用。移动应用程序调用适配器上的安全过程,这将触发身份验证,身份验证成功完成,该过程被重新调用,我可以在网络跟踪中看到,从适配器到后端的调用中放置了正确的基本auth标头。如果移动应用程序在已经通过身份验证的情况下进行适配器调用,则适配器只会使用正确的基本Auth标头调用back en。如果同时连接多个移动应用程序并以不同用户身份登录,则适配器将为调用它的用户使用正确的基本Auth标头。

唯一不起作用的是,当移动应用程序调用适配器,以user1身份进行身份验证,从后端获得user1的正确结果,调用WL.Client.logout(),对适配器进行另一次调用,并这次以User2身份进行身份验证。

在适配器过程中,我调用WL.Server.getActiveUser()来验证活动用户,果然,用户是正确的(user2)。但是,当调用转到后端时,Worklight添加的基本Auth头具有user1的凭据,因此移动应用程序获得错误的结果。

如果我退出并重新启动应用程序,一切正常,我可以直接作为用户2进行身份验证,并获得user2的正确结果。唯一有问题的情况是,当我在移动应用程序和Worklight服务器之间的单个会话中以不同的用户身份注销/重新登录时。

这是将基本身份验证与Worklight适配器一起使用的已知限制吗?有没有办法在我注销时强制重置移动客户端和Worklight服务器之间的连接?(无需重启应用程序)

EN

回答 1

Stack Overflow用户

发布于 2013-07-21 23:04:19

既然你说“物理”退出并重新打开应用程序可以为你解决这个问题,那么你可以在注销后立即使用WL.Client.reloadApp(),以便在登录-注销-登录的情况下保持应用程序流。看看有没有帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17773649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档