2016-04-17 11 views
3

Als Teil der FINISH-Beschleuniger verwenden wir FIWARE KeyRock und Wirecloud. Momentan verwenden wir die globale Instanz von Fiware Labs zur Untersuchung.Fiware KeyRock API Fehler: Mitgliedschaft in Organisationen nicht zurückgegeben

Wir möchten unser System so einschränken, dass Benutzer nur Daten anzeigen können, die zu den Organisationen gehören, denen sie angehören.

Die folgende Fluss scheint logisch, aber korrigiert mich wenn ich falsch bin:

  1. Ein Benutzer meldet sich Wirecloud und wird durch einen KeyRock Login-Bildschirm gerichtet.
  2. Ein Wirecloud-Widget erhält ein Zugriffstoken aus der Wirecloud-Umgebung. Das Zugriffstoken wurde erstellt, als der Benutzer sich anmeldete.
  3. Das Wirecloud-Widget sucht nach den Organisationen und Rollen, denen ein Benutzer angehört. Auf dieser Grundlage fügt es seiner Abfrage Organisationsnamen hinzu.
  4. Das Wirecloud-Widget fragt einen Webservice (Orion oder anders) mit der soeben erstellten Abfrage ab.
  5. Wir setzen den Wilma-PEP-Proxy zwischen das Wirecloud-Widget und den Webservice, um zu validieren, dass der Benutzer ein Mitglied der Organisationen in der Abfrage ist.

PROBLEM: Wir Benutzerinformationen aus KeyRock mit dem https://account.lab.fiware.org/user?access_token=XXXXXXXXXXX Anruf abfragen. Aber das enthält keine Informationen über die Organisationen, denen der Benutzer gemäß der KeyRock-Weboberfläche angehört. Das Organizations-Element ist ein leeres Array. Wir erhalten eine Reihe von Rollen in der JSON-Antwort, aber keine von ihnen ist die Rolle "Mitglieder", die Sie den Benutzern über den Bildschirm "Verwalten Ihrer Organisationsmitglieder" in KeyRock zuweisen.

Einige Ausgrabungen ergaben, dass die Keystone-Instanz, die auf Fiware-Labs läuft, die Informationen enthält (unter der Annahme, dass ein Keystone-Projekt = KeyRock-Organisation ist). Das von KeyRock bereitgestellte Zugriffstoken ist jedoch in der Keystone-API nicht gültig. Die von uns verwendete API war hier zugänglich: http://cloud.lab.fiware.org:4730/v3/ Das Erlangen eines neuen Zugriffstokens von der Keystone-API ist nicht das, was wir wollen, da dies ein anderes Zugriffstoken als Wirecloud wäre, das eine Art von Proxy für die erneute Anmeldung erfordern würde Abrufen der Organisationsmitgliedschaft Das vereitelt eher den Punkt der Übergabe eines Zugriffstokens.

Dies scheint ein Fehler in der KeyRock-API in der fware labs-Instanz zu sein. Oder fehle ich hier etwas? Oder wird dieses Problem magisch verschwinden, wenn wir keyrock auf unserem eigenen Server installieren?

Vielen Dank für jede Hilfe, Robin

+0

ich einen Link hier: [link] (https://forge.fiware.org/plugins/mediawiki/wiki/fiware/index.php/Application_Mashup_-_Wirecloud_-_User_and_Programmer_Guide# getTenants) und ein Wirecloud-Beispiel-Widget hier: [link] (https://wirecloud.conwet.etsiinf.upm.es/slides/3.2.2_Using%20Object%20Storage.html#slide28), die das Abrufen von Tenants ermöglichen (= Keystone-Projekte) = KeyRock-Organisationen) aus einem wirecloud-Widget. Ich habe das Widget in mein Mashup hochgeladen, und obwohl ich keinen Objektspeicher eingerichtet habe (was dazu führt, dass sich das Widget beschweren kann), kann ich sehen, in welcher Organisation mein Benutzer Mitglied ist. – Robin

+0

Obwohl der obige Kommentar es mir erlaubt, die KeyRock-API direkt von Wirecloud zu umgehen, indem Sie stattdessen die Keystone-API verwenden, stellt sich die Frage, ob wir die KeyRock-API überhaupt verwenden sollten. – Robin

+0

hast du die Lösung gefunden? Ich bekomme auch eine leere Liste von Organisationen. Sogar der Eigentümer der Organisation erhält eine leere Liste. – Dalton

Antwort

1

müssen Sie erklärt die Schritte folgen here aber die spezifische Organisation verwenden. Wahrscheinlich haben Sie verpasst den Schritt „Autorisieren“

+1

Danke für die Antwort Alvaro. Dies fügt ein gefülltes Organisationselement in den https://account.lab.fiware.org/user?access_token=xxxx Aufruf ein. Wir erwarteten jedoch, dass das Element ** organizations ** Daten enthält, nachdem wir Benutzer als Mitglied auf der Registerkarte ** members ** in der KeyRock-Benutzeroberfläche hinzugefügt haben. Der/user-API-Aufruf folgt nicht der gleichen Struktur wie die Benutzeroberfläche, was sehr verwirrend erscheint. Jetzt müssen wir zusätzlich zum Hinzufügen eines Benutzers zu einer Organisation eine Berechtigung hinzufügen. Das mag sinnvoll sein, aber die KeyRock-Benutzeroberfläche fördert das Verständnis nicht. – Robin

+0

Alvaro, die Schaltfläche "Autorisieren" ist ausgeblendet, bis ein Benutzer im Bildschirm Einstellungen-> Kontostatus ein Community-Upgrade anfordert. Wie können wir ein "Community Upgrade" automatisieren oder es umgehen, damit es in unserer eigenen Installation verwendet werden kann? Oder sollten wir einfach den [KeyRock Server]/Benutzeranruf ändern? Wenn ja, welche Quelldatei sollten wir uns ansehen? – Robin

Verwandte Themen