Ага,
Хотя вы не можете прочитать токен OAuth2 из виджетов/операторов, вы можете использовать прокси-сервер WireCloud и настроить его для внедрения токена OAuth2 в ваши запросы. Для этого при отправке запроса необходимо указать следующие заголовки:
X-FI-WARE-OAuth-Token
значение должно быть true
X-FI-WARE-OAuth-Header-Name
— это имя заголовка, который будет добавлен к запросам с токеном OAuth2, в вашем случае: X-Auth-Token
, поскольку вы используете прокси-сервер PEP (хотя правильный заголовок для OAuth2 — Authorization
).
Учтите, что у анонимных пользователей нет действительного токена OAuth2. Кроме того, если вы используете собственный экземпляр WireCloud, его можно настроить для поддержки нескольких серверных частей аутентификации. В этом случае какой-то пользователь не будет связан с учетной записью IdM. Вы можете проверить, есть ли у текущего зарегистрированного пользователя связанный токен IdM, выполнив следующий код: MashupPlatform.context.get('fiware_token_available');
Также имеется экспериментальная поддержка использования токена OAuth2 владельца панели мониторинга вместо использования токена OAuth2 текущего вошедшего в систему пользователя. Для этого добавьте заголовок X-FI-WARE-OAuth-Source
, используя значение workspaceowner
.
Пример:
MashupPlatform.http.makeRequest(url, {
requestHeaders: {
"X-FI-WARE-OAuth-Token": "true",
"X-FI-WARE-OAuth-Header-Name": "X-Auth-Token",
"X-FI-WARE-OAuth-Source": "workspaceowner"
},
...
});
Соображения на будущее:
В производственной среде службы, использующие аутентификацию OAuth2, должны обслуживаться с использованием https из соображений безопасности. Поэтому мы рассматриваем возможность добавления проверок в прокси-сервер WireCloud только для внедрения токенов OAuth2, если конечный URL-адрес использует схему https. Единственным исключением могут быть сервисы, доступные в той же интрасети, что и WireCloud.
person
Álvaro Arranz
schedule
23.10.2015