Распространение токена LTPA от приложения к адаптеру до конечного сервиса

Я пытаюсь использовать и понимать использование безопасности LTPA на рабочем месте и распространение cookie-файла LTPA.

Я могу подтвердить подлинность с помощью WAS и, используя сниффер, могу видеть, что рабочий свет возвращает мне файл cookie LtpaToken2, но когда я вызываю HTTP-адаптер, который вызывает службу в другом WAS на том же компьютере, что и сервер Worklight, этот адаптер делает не распространять куки.

Я думаю, что я установил правильную конфигурацию. (В конце)

Можно ли настроить сервер рабочего освещения для автоматического распространения токена LTPA из приложения на адаптеры и от адаптеров до конечного сервиса?

Если это невозможно сделать автоматически, как я могу получить файл cookie Ltpa внутри кода адаптера для добавления его в параметр headers метода WL.Server.invokeHTTP().

Это моя конфигурация безопасности:

Для этого мне пришлось вручную добавить login.html в настраиваемую войну, созданную в студии worklight.

Применение-дескрипторов:

<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 ответ

Решение

Я считаю, что это то, что вы ищете:

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-файла и добавления его в заголовок при каждом вызове адаптера.

Другие вопросы по тегам