从App到适配器的LTPA令牌传播到最终服务

时间:2013-05-02 17:25:56

标签: ibm-mobilefirst ltpa

我正在尝试使用和理解LTPA安全性在工作灯中的使用以及LTPA cookie的传播。

我能够再次验证WAS并使用嗅探器我可以看到worklight返回LtpaToken2 cookie但是当我调用HTTP适配器时,它调用与Worklight服务器在同一台机器中的其他WAS中的服务,该适配器不会传播cookie。

我想我已经设置了正确的配置。 (最后)

是否可以配置worklight服务器以自动将LTPA令牌从应用程序传播到适配器,从适配器传播到最终服务?

如果无法自动执行此操作,如何在适配器代码中检索Ltpa cookie,以将其添加到WL.Server.invokeHTTP()方法的headers参数中。

这是我的安全配置:

为了它的工作,我不得不在worklight studio中生成的自定义战争中手动添加login.html。

应用程序描述符:

<ipad bundleId="xxxx" securityTest="BPMApp-strong-mobile-securityTest" version="1.0">

适配器描述符:

<procedure connectAs="endUser" name="getRest" securityTest="BPMAdapter-securityTest"/>

安全配置:

<realm loginModule="WASLTPAModule" name="BPMAuthRealm"> 
    <className>com.worklight.core.auth.ext.WebSphereFormBasedAuthenticator</className>
    <parameter name="login-page" value="/login.html"/>
    <parameter name="error-page" value="/login.html"/>
    <parameter name="cookie-name" value="LtpaToken2"/>
</realm>

<loginModule name="WASLTPAModule" canBeResourceLogin="true" isIdentityAssociationKey="false">
    <className>com.worklight.core.auth.ext.WebSphereLoginModule</className>
</loginModule>

<mobileSecurityTest name="BPMApp-strong-mobile-securityTest">
    <testUser realm="BPMAuthRealm"/>
    <testDeviceId provisioningType="none"/>
</mobileSecurityTest>

<customSecurityTest name="BPMAdapter-securityTest">
    <test isInternalUserID="true" realm="BPMAuthRealm" isInternalDeviceID="true"/>
</customSecurityTest>

谢谢。

1 个答案:

答案 0 :(得分:1)

我相信这就是你要找的东西:

function getCurrentUser() {
path = '/snoop';
var attributes = WL.Server.getActiveUser().attributes;
var token = "LtpaToken=" + attributes.get('LtpaToken');

var input = {
    method : 'get',
    returnedContentType : 'html',
    headers: {"Cookie": token},
    path : path
};

return WL.Server.invokeHttp(input);

}

此代码剪辑来自5.0.3,因此我认为在较新版本中从属性对象获取令牌的语法可能已更改。

您可能需要更改:

var token = "LtpaToken=" + attributes.get('LtpaToken');

为:

var token = "LtpaToken=" + attributes['LtpaToken'];

但这是个主意。适配器不会在后续请求时发送cookie,但是适配器可以通过用户的“属性”对象使用cookie。这只是获取cookie并在每次适配器调用时将其添加到头部的问题。