Oauth2 в Wirecloud

Как лучше реализовать авторизацию OAuth2 в операторе? Мы защитили наш серверный API с помощью прокси-сервера PEP, и нам нужен действительный токен. Предоставляет ли wirecloud какое-либо средство для доступа к нему после входа пользователя в систему. Что-то вроде:

MashupPlatform.context.getOAuthToken()

Мы стараемся избегать жесткого кодирования учетных данных пользователя в логике оператора.


person nespapu    schedule 23.10.2015    source источник


Ответы (1)


Ага,

Хотя вы не можете прочитать токен 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