FINISH アクセラレータの一部として、FIWARE KeyRock と Wirecloud を使用しています。現在、Fiware labs グローバル インスタンスを使用して調査しています。
ユーザーがメンバーである組織に属するデータのみを表示できるように、システムを制限したいと考えています。
次のフローは論理的に見えますが、間違っている場合は修正してください。
- ユーザーが Wirecloud にログインすると、KeyRock ログイン画面に誘導されます。
- Wirecloud ウィジェットは、Wirecloud 環境からアクセス トークンを取得します。アクセス トークンは、ユーザーがログインしたときに作成されました。
- Wirecloud ウィジェットは、ユーザーがメンバーである組織と役割を検索します。これに基づいて、クエリに組織名を追加します。
- Wirecloud ウィジェットは、作成したばかりのクエリを使用して Web サービス (Orion またはその他) にクエリを実行します。
- Wirecloud ウィジェットと Web サービスの間に Wilma PEP プロキシを配置して、ユーザーがクエリ内の組織のメンバーであることを検証します。
問題: 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 から新しいアクセス トークンを取得することは、私たちが望んでいるものではありません。これには、再度ログインして組織のメンバーシップを取得するために何らかのプロキシが必要になります。それはむしろ、アクセストークンを渡すという点を無効にします.
これは、fiware labs インスタンスの KeyRock API のバグのようです。または、ここで何か不足していますか?それとも、自分のサーバーに keyrock をインストールすれば、この問題は魔法のように解決するのでしょうか?
助けてくれてありがとう、ロビン