在全球Wirecloud实例中,我有一个使用此处提到的KeystoneAPI的小部件: https://wirecloud.readthedocs.io/en/stable/development/object_storage_api/
到目前为止一切顺利。
但是现在我想转移到KeyRock进行身份验证。我仍然想从我的wirecloud小部件传递令牌到后端服务,例如Wilma PEP代理也没有连接到KeyRock。但是KeystoneAPI似乎与Keystone有关(因此可能就是这个名字)。
是否可以从Wirecloud小部件访问KeyRockAPI?小部件如何获取用户登录的KeyRock OAuth2令牌?我找不到任何关于此的文件。
答案 0 :(得分:0)
WireCloud不允许小部件和操作员读取分配给用户的OAuth2令牌,但是如果它们通过WireCloud的代理,它支持将令牌注入HTTP请求。这个注入由几个HTTP头控制,这是一个例子:
MashupPlatform.http.makeRequest(url, {
requestHeaders: {
"X-FI-WARE-OAuth-Token": "true",
"X-FI-WARE-OAuth-Header-Name": "X-Auth-Token"
},
...
});
您可以在FIWARE Academy course中找到有关如何使用此功能的更多信息,更具体地说,请参阅3.1.8. Accessing third-party services using IdM tokens
部分(请注意,此文档与您在评论中指出的相同,但在html格式;))。
安装了KeyRock和Wirecloud的docker容器,尝试了无法检索身份验证令牌的objectstorage demo小部件。跟踪问题是%idm_token%没有被python代码填充,可能是在plugins.py中,因为它查找'fiware'的AUTHENTICATION_BACKEND,而文档声明包含'wirecloud.fiware.social_auth_backend.FIWAREOAuth2'。
我建议您在StackOverflow中创建一个新问题来解决此问题。请提供有关配置的更多详细信息。
那么我的来自wirecloud的身份验证令牌将绑定到该应用程序?如果是这样,该令牌对我自己的应用程序是无用的,除非我可以获得它的新令牌。我错了吗?
是的,Mashup门户是Account门户中的应用程序编号17,WireCloud获取的OAuth2令牌绑定到该应用程序。我无法预见该令牌是否对您的应用程序有用。此令牌可用于验证用户,但IdM根据绑定到令牌的应用程序限制返回的信息(例如角色)。所以,显然,这种集成并不完美,但我们缺少IdM的一些集成功能,以使其更有用。