作为 FINISH 加速器的一部分,我们使用 FIWARE KeyRock 和 Wirecloud。目前我们正在使用 Fiware labs 全局实例进行调查。
我们希望限制我们的系统,以便用户只能查看属于他们所属组织的数据。
以下流程似乎合乎逻辑,但如果我错了,请纠正我:
- 用户登录到 Wirecloud 并被引导通过 KeyRock 登录屏幕。
- Wirecloud Widget 从 Wirecloud 环境中获取访问令牌。访问令牌是在用户登录时创建的。
- Wirecloud 小部件查找用户所属的组织和角色。基于此,它将组织名称添加到其查询中。
- Wirecloud 小部件使用它刚刚创建的查询来查询 Web 服务(Orion 或其他)。
- 我们将 Wilma PEP 代理放在 Wirecloud Widget 和 Web 服务之间,以验证用户是查询中组织的成员。
问题:我们可以使用https://account.lab.fiware.org/user?access_token=XXXXXXXXXXXX调用 从 KeyRock 查询用户信息。但根据 KeyRock Web 界面,这不包含有关用户所属组织的任何信息。组织元素是一个空数组。我们在 json 响应中获得了一堆角色,但它们都不是您从 KeyRock 中的“管理您的组织成员”屏幕分配给用户的“成员”角色。
一些挖掘显示,在 Fiware 实验室上运行的 Keystone 实例包含这些信息(假设 Keystone 项目 = KeyRock 组织)。然而,KeyRock 提供的访问令牌在 Keystone API 上是无效的。我们使用的 API 可在此处访问:http : //cloud.lab.fiware.org:4730/v3/ 从 Keystone API 获取新的访问令牌不是我们想要的,因为这将是与 Wirecloud 不同的访问令牌获得,这将需要某种代理再次登录并检索组织成员资格。这反而破坏了传递访问令牌的意义。
这似乎是 fiware labs 实例上 KeyRock API 中的一个错误。或者我在这里错过了什么?或者如果我们在自己的服务器上安装 keyrock,这个问题会神奇地消失吗?
感谢您的帮助,罗宾