0

当社は FINISH アクセラレーターの一部であり、fiware が提供する Docker コンテナーを使用して、独自のサーバーに Wirecloud と KeyRock をデプロイしています。

KeyRock-IdM がセットアップされ、Wirecloud にリンクされています。ログインしたユーザーのトークンを、ウィジェットにデータを返す API に渡そうとしています。

github コードで「X-FI-WARE...」ヘッダーに関するドキュメントを見つけ、テスト ウィジェットを作成しました (以下に示す main.js)。fiware labs インスタンスにデプロイすると、すぐに使用できます。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) からシンプルな昇給。

/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'

4

3 に答える 3

1

問題はpython-social-authv0.2.18 の使用に関連しているようです。v0.2.19 にアップデートしてください。この問題の詳細については、github のこのチケットを参照してください。

于 2016-05-06T12:57:58.620 に答える
0

余分な「-」を追加していると思います。「X-fiware-...」を試す

于 2016-05-01T06:53:07.117 に答える
-1

Docker Hub には偽の「公式」イメージが含まれています

Alonzo の提案を試してみたところ、ログから明らかな解決策が得られなかったので、使用している Docker イメージが信頼できるものであるかどうかを再確認することにしました。

私が使用していた docker イメージ (wirecloud/fiware-wirecloud) は、公式のリファレンス実装であると述べていますが、実際には「Wirecloud」と呼ばれる誰かが所有する古いバージョン (0.8) であることがわかりました。Docker Hub または Kitematic で Wirecloud を検索すると、最初に表示されるエントリです。

バージョン 0.9 の docker イメージ fiware/wirecloud にアップグレードしたところ、動作するようになりました。バックエンド サービスに渡されたアクセス トークンを確認できます。

不思議なことに、 https: //wirecloud.conwet.etsiinf.upm.es/slides/attachments/objectstorage.wgt の objectstorage.wgt の例でモデル化したテスト ウィジェットは、テストする前に新しい config.xml 形式に更新する必要がありました。 .

私は提案します:

  • ドキュメントの docker ハブにある正しい wirecloud イメージへのリンク。
  • 「Wirecloud」ユーザーに連絡して、イメージの説明を変更するよう依頼するか、公式の Docker イメージに関する情報をコメントに追加します。
于 2016-05-06T14:07:13.080 に答える