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