Адаптер 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"