Wirecloud中的Oauth2

时间:2015-10-23 09:42:38

标签: fiware fiware-wirecloud

在运营商中实施OAuth2授权的最佳方式是哪种?我们已经使用PEP代理保护了我们的后端API,我们需要一个有效的令牌。一旦用户登录,wirecloud是否提供访问它的任何手段。例如:

MashupPlatform.context.getOAuthToken()

我们尽量避免在运营商的逻辑中硬编码用户凭证。

1 个答案:

答案 0 :(得分: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"
    },
    ...
});

未来考虑因素:

在生产环境中,出于安全原因,应使用https提供使用OAuth2身份验证的服务。因此,我们正在考虑在WireCloud代理中添加检查,以便在最终URL使用https架构时仅注入OAuth2令牌。唯一的例外是与WireCloud在同一个Intranet中可用的服务。