1

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

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

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

是否可以将工作灯服务器配置为自动将 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>

谢谢你。

4

1 回答 1

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 并将其添加到标头即可。

于 2013-05-02T20:58:41.817 回答