Fiware KeyRock API 错误:未返回组织的成员资格

Fiware KeyRock API bug: Membership of organisations not returned

作为 FINISH 加速器的一部分,我们使用 FIWARE KeyRock 和 Wirecloud。目前我们正在使用 Fiware labs 全局实例进行调查。

我们想限制我们的系统,以便用户只能查看属于他们所属组织的数据。

以下流程似乎合乎逻辑,但如果我错了请纠正我:

  1. 用户登录 Wirecloud 并被引导通过 KeyRock 登录屏幕。
  2. Wirecloud 小部件从 Wirecloud 环境获取访问令牌。访问令牌是在用户登录时创建的。
  3. Wirecloud 小部件查找用户所属的组织和角色。基于此,它将组织名称添加到其查询中。
  4. Wirecloud 小部件使用它刚刚创建的查询来查询网络服务(Orion 或其他)。
  5. 我们将 Wilma PEP 代理放在 Wirecloud Widget 和网络服务之间,以验证用户是查询中组织的成员。

问题: 我们可以使用 https://account.lab.fiware.org/user?access_token=XXXXXXXXXXX 调用从 KeyRock 查询用户信息。但根据 KeyRock Web 界面,这不包含有关用户所属组织的任何信息。 organizations 元素是一个空数组。我们在 json 响应中得到了一堆角色,但其中 none 是您从 KeyRock 的 "Manage your organization members" 屏幕分配给用户的 "members" 角色。

一些挖掘表明 Fiware 实验室的 Keystone 实例 运行 包含信息(假设 Keystone 项目 = KeyRock 组织)。然而,KeyRock 提供的访问令牌在 Keystone API 上无效。我们使用的 API 可以在这里访问:http://cloud.lab.fiware.org:4730/v3/ 从 Keystone API 获取新的访问令牌并不是我们想要的,因为这与 Wirecloud 获得的访问令牌不同,这将需要某种代理再次登录并检索组织成员资格。这反而破坏了传递访问令牌的意义。

这似乎是 fiware 实验室实例上 KeyRock API 中的错误。 或者我在这里遗漏了什么? 或者,如果我们在自己的服务器上安装 keyrock,这个问题会神奇地消失吗?

感谢您的帮助, 罗宾

您必须按照 here 说明的步骤进行操作,但要使用特定的组织。可能您错过了 "Authorize" 步骤