FIWARE Wirecloud:使用X-FI-WARE-OAuth-Token请求标头时出错

时间:2016-04-30 23:16:55

标签: fiware fiware-wirecloud

我们是FINISH加速器的一部分,正在使用fiware提供的docker容器在我们自己的服务器上部署Wirecloud和KeyRock。

我们已设置KeyRock-IdM并链接到Wirecloud。我们正在尝试将登录的用户令牌传递给API,该API将数据返回到窗口小部件。

我们在github代码中找到了关于“X-FI-WARE ...”标题的文档,并编写了一个测试小部件(main.js如下所示)。当部署在fiware实验室实例上时,它开箱即用。当使用docker容器在我们的本地安装上部署时,会出现以下错误:“当前用户没有活动的FIWARE配置文件”。我搜索了settings.py文件,但不知道这个错误来自哪里。我有DEBUG = True但没有显示在日志中。运行窗口小部件的用户是通过KeyRock IdM登录的。

/*jshint globalstrict:true */
/*global MashupPlatform, ObjectStorageAPI, StyledElements*/

(function () { 

"use strict";


var token_available = MashupPlatform.context.get('fiware_token_available');
var username = MashupPlatform.context.get('username');
alert(username + " has token?: " + token_available);

var url = MashupPlatform.prefs.get('keyRock_url');

var request = MashupPlatform.http.makeRequest(url, {
    requestHeaders: {
        "X-FI-WARE-OAuth-Token": "true",
        "X-FI-WARE-OAuth-GET-Parameter": "access_token"
    },
    method: "GET",
    onSuccess: function (response) {
        alert("Success:" + JSON.stringify(response.responseText));
        document.getElementById('response').textContent = response.responseText;
    },
    onFailure: function (response) {
        alert("Failed:" + JSON.stringify(response.responseText));
    },
    onComplete: function () {
    }
}
);


})();

我怎样才能找出问题所在?

从下面的评论中,更改了一个python脚本: 编辑了docker容器中的/usr/local/lib/python2.7/site-packages/wirecloud/fiware/proxy.py文件,并将第37行从raise ValidationError(error_msg)替换为简单的raise。

来自/var/log/apache2/error.log的日志在

之下

[Fri May 06 07:12:33.745550 2016] [wsgi:error] [pid 13:tid 139955375367936] Internal Server Error: /cdp/https/account.lab.fiware.org/user [Fri May 06 07:12:33.745580 2016] [wsgi:error] [pid 13:tid 139955375367936] Traceback (most recent call last): [Fri May 06 07:12:33.745584 2016] [wsgi:error] [pid 13:tid 139955375367936] File "/usr/local/lib/python2.7/site-packages/wirecloud/proxy/views.py", line 234, in proxy_request [Fri May 06 07:12:33.745587 2016] [wsgi:error] [pid 13:tid 139955375367936] response = WIRECLOUD_PROXY.do_request(request, url, request_method, workspace) [Fri May 06 07:12:33.745589 2016] [wsgi:error] [pid 13:tid 139955375367936] File "/usr/local/lib/python2.7/site-packages/wirecloud/proxy/views.py", line 144, in do_request [Fri May 06 07:12:33.745592 2016] [wsgi:error] [pid 13:tid 139955375367936] processor.process_request(request_data) [Fri May 06 07:12:33.745594 2016] [wsgi:error] [pid 13:tid 139955375367936] File "/usr/local/lib/python2.7/site-packages/wirecloud/fiware/proxy.py", line 59, in process_request [Fri May 06 07:12:33.745597 2016] [wsgi:error] [pid 13:tid 139955375367936] token = get_access_token(request['user'], _('Current user has not an active FIWARE profile')) [Fri May 06 07:12:33.745599 2016] [wsgi:error] [pid 13:tid 139955375367936] File "/usr/local/lib/python2.7/site-packages/wirecloud/fiware/proxy.py", line 33, in get_access_token [Fri May 06 07:12:33.745602 2016] [wsgi:error] [pid 13:tid 139955375367936] if oauth_info.access_token is None: [Fri May 06 07:12:33.745604 2016] [wsgi:error] [pid 13:tid 139955375367936] File "/usr/local/lib/python2.7/site-packages/social/storage/base.py", line 41, in access_token [Fri May 06 07:12:33.745615 2016] [wsgi:error] [pid 13:tid 139955375367936] return self.extra_data.get('access_token') [Fri May 06 07:12:33.745618 2016] [wsgi:error] [pid 13:tid 139955375367936] AttributeError: 'unicode' object has no attribute 'get'

3 个答案:

答案 0 :(得分:1)

似乎问题与python-social-auth v0.2.18的使用有关。请更新至v0.2.19。有关此问题的详细信息,请参阅github中的此ticket

答案 1 :(得分:0)

我猜你正在增加额外的" - "。尝试" X-fiware -..."

答案 2 :(得分:-1)

Docker Hub包含伪造的“官方”图像

在尝试了Alonzo的建议并且日志没有产生明显的解决方案之后,我决定仔细检查我使用的码头图像是否值得信赖。

事实证明我正在使用的docker镜像(wirecloud / fiware-wirecloud)是官方参考实现,实际上是一个名为'Wirecloud'的人所拥有的旧版本(0.8)。如果您在docker hub或Kitematic中搜索Wirecloud,则它是第一个显示的条目。

我升级到了版本0.9的docker image fiware / wirecloud,现在它可以工作了。我可以看到传递给我的后端服务的访问令牌。

奇怪的是,我在https://wirecloud.conwet.etsiinf.upm.es/slides/attachments/objectstorage.wgt上的objectstorage.wgt示例中建模的测试小部件需要在我测试之前更新为新的config.xml格式。

我建议:

  • 指向文档中docker hub上正确的wirecloud图像的链接。
  • 联系'Wirecloud'用户并要求他们更改其图片说明,或添加评论以及有关官方泊坞窗图片的信息。