Авторизация HTTP-адаптера в IBM Worklight
Я изо всех сил пытаюсь получить HTTP-запрос адаптера к защищенному RSS-канал для правильного выполнения. Я прочитал тонну документации IBM, а также искал неработающие ссылки на перемещенные или находящиеся в стадии обслуживания страницы IBM. К сожалению, ни один из найденных примеров не показывает, как авторизовать этот запрос.
В этом примере я пытаюсь получить доступ к RSS-каналу из установки Connections в IBM Greenhouse Environment.
Адаптер XML:
<?xml version="1.0" encoding="UTF-8"?>
<wl:adapter name="exampleAdapter"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wl="http://www.worklight.com/integration"
xmlns:http="http://www.worklight.com/integration/http">
<displayName>feedRead</displayName>
<description>feedRead</description>
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>https</protocol>
<domain>greenhouse.lotus.com</domain>
<port>443</port>
</connectionPolicy>
<loadConstraints maxConcurrentConnectionsPerNode="2" />
</connectivity>
<procedure name="getFeed" connectAs="server"/>
</wl:adapter>
Адаптер.js:
function getFeed() {
var input = {
method : 'get',
returnedContentType : 'xml',
path : 'connections/opensocial/basic/rest/activitystreams/@me/@all/@all? rollup=true&format=atom'
};
return WL.Server.invokeHttp(input);
}
Как я могу передать учетные данные, необходимые для доступа к этому каналу?
Спасибо!
2 ответа
Вы можете указать механизм аутентификации как часть XML-файла адаптера. Документация находится здесь: элемент аутентификации адаптера HTTP.
В данный момент у меня нет экземпляра Worklight Studio для проверки, но я хотел бы представить, что есть представление дизайна XML-кода адаптера или некоторые функции автозаполнения, помогающие понять, как следует указывать детали в <authentication>
блок.
Пример:
<?xml version="1.0" encoding="UTF-8"?>
<wl:adapter name="exampleAdapter"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wl="http://www.worklight.com/integration"
xmlns:http="http://www.worklight.com/integration/http">
<displayName>feedRead</displayName>
<description>feedRead</description>
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>https</protocol>
<domain>greenhouse.lotus.com</domain>
<port>443</port>
<authentication>
<basic/>
<serverIdentity>
<username> ${user} </username>
<password> ${password} </password>
</serverIdentity>
</authentication>
</connectionPolicy>
<loadConstraints maxConcurrentConnectionsPerNode="2" />
</connectivity>
<procedure name="getFeed" connectAs="server"/>
</wl:adapter>
Как фид ожидает, что учетные данные будут переданы? Если он использует Basic Auth, то вы можете base64 кодировать свои учетные данные и передавать их в заголовок вызова адаптера следующим образом:
function getFeed(){
var input = {
method : 'get',
headers: {Authorization: "Basic YWRtaW5Ad29ya2xpZ2h0LmlibTpjaGFuZ2VJdCE="},
path : "/hello",
returnedContentType : 'plain'
};
return WL.Server.invokeHttp(input);
}