Адаптер Worklight: базовая аутентификация. Как я могу установить, чтобы все мои адаптеры отправляли учетные данные activeUser в заголовке каждой процедуры?

У меня есть страница входа в Worklight, которая устанавливает активного пользователя на сервере Worklight. Это устанавливает userIdentity. В этом userIdentity я сохраняю зашифрованную строку "username: password".

Каждый раз, когда вызывается процедура адаптера, он проверяет, вошел ли пользователь в систему. Когда он вошел в систему, вызывается процедура.

В серверной части я использую базовую аутентификацию для каждого вызова REST. Так что мне нужно в заголовке каждого звонка ->

    Authorization: Basic  encrypted(username:password)

Когда я издеваюсь над этим, все работает. Пример ->

    var input = {
    method : 'get',
    returnedContentType : 'json',
    path : path,
     headers:{
            Authorization: "Basic "+"dGVzdDp0ZXN0"
        }

Мне нужно установить, что каждый раз, когда вызывается процедура, это имя пользователя: пароль является именем пользователя: пароль от userIdentity пользователя, который вошел в систему на рабочем сервере.

Как я могу это сделать?


Авторизация HTTP-адаптера в IBM Worklight

Здесь они используют $(имя пользователя), но я не знаю, куда ссылается знак $.

2 ответа

Решение

Я не думаю, что это лучший способ, но он работает для меня...

Когда я установил userIdentity, я добавил loginString в объекте пользователя. этот объект содержит учетные данные var, которые я инициировал в логине-адаптере.

loginstring = encode.encode_base64 (user: pass);

userIdentity = {

    userID:"01",
    displayName: "name",
    credentials:loginstring, 
    teacherId:"212",

}

WL.Server.setActiveUser ("AuthRealm", userIdentity);

Затем в адаптере вы можете добраться до объекта userIdentity:

function get () {

var user = WL.Server.getActiveUser("AuthRealm");
var input = {
    method : 'get',
    returnedContentType : 'json',
    headers:{
        Authorization: "Basic " + user.credentials
    },
    path : 'path',
};

return WL.Server.invokeHttp (входной); }

В вашей политике подключения все, что вам нужно, это:

        <authentication>
            <basic/>
        </authentication>  

Затем для каждой из ваших процедур используйте:

<procedure name="getFeed" connectAs="endUser"/>

Вам нужен только serverIdentity, если вы используете connectAs="server"