Lorawan-stack: Der neue Benutzer (Administrator) hat keine Berechtigungen in der Konsole

Erstellt am 14. Aug. 2019  ·  6Kommentare  ·  Quelle: TheThingsNetwork/lorawan-stack

Zusammenfassung

Beim Anlegen eines Admin-Benutzers im CLI kann es vorkommen, dass dieser Benutzer nicht über ausreichende Rechte in der Konsole verfügt, um Gateways und Anwendungen zu erstellen oder zu bearbeiten. In einem anderen Fall hat ein neuer normaler Benutzer auch keine Berechtigungen in der Konsole, um irgendetwas zu tun. Es könnte sich um einen Fehler oder einfach um fehlende Dokumentation zum richtigen Erstellen von Benutzern handeln.

Schritte zum Reproduzieren

Ich bin mir nicht ganz sicher. Es handelt sich hier um zwei Fälle, die möglicherweise mit derselben Ursache zusammenhängen. Im ersten Fall arbeite ich an einer Maschine, die nicht von mir eingerichtet wurde, und ich habe nur begrenzte Informationen über den Prozess.

Fall 1: fremder Stack; Setup als Version 3.0.0 installiert und auf 3.1.0 aktualisiert, bevor Sie die Konsole verwenden.

  1. setup ttn 3.0.0 nach cli erste schritte
  2. Update auf 3.1.0
  3. Konsolen-Client einrichten (und es möglicherweise vermasseln*)
  4. --admin Benutzer erstellen (
    5. Melden Sie sich bei der Konsole an und versuchen Sie, ein Gateway zu erstellen.

*Was beim Upgrade passierte, war, dass der Konsolen-Erstellungsprozess mit falschen URIS durchgeführt wurde, also haben wir den Konsolen-Client in der Datenbank gelöscht und den is-db -Befehl erneut verwendet. Vielleicht haben wir es hier vermasselt.

Fall 2 : Auf meinem Setup:

  1. Setup ttn nach den ersten Schritten
  2. Erstellen Sie einen normalen Benutzer ttn-lw-cli users create norman --name norman --primary-email-address norman@localhost mit dem Admin-Benutzer aus den ersten Schritten
  3. Versuchen Sie, ein Gateway oder eine Anwendung zu erstellen

Was siehst du jetzt?

In beiden Fällen antwortet die Konsole mit Insufficient rights for user 'myuser' , nachdem Sie die Details eingegeben und auf die Schaltfläche Create Gateway oder Create Application geklickt haben.

In der Browserkonsole gibt es nichts Ungewöhnliches. Die Netzwerkregisterkarte zeigt eine 403 Forbidden-Antwort von ttn.

Wenn Sie eine Anwendung über die CLI mit dem Admin-Benutzer erstellen und sie dem betreffenden Benutzer zuweisen, sieht der Benutzer möglicherweise die Anwendung/das Gateway, aber wenn Sie darauf klicken, wird ein 403 Forbidden angezeigt.

Was möchtest du stattdessen sehen?

Auf jeden Fall würde ich erwarten, dass ein neu erstellter Benutzer zumindest Gateways und Anwendungen für sich selbst erstellen und seine Ansichten öffnen kann, wenn er als Mitarbeiter hinzugefügt wird.

Ich würde auch mehr Dokumentation zum Benutzererstellungsprozess und zur Verwaltung von Benutzerrechten erwarten.

Umfeld

The Things Network Stack for LoRaWAN: ttn-lw-stack
Version:             3.1.0
Go version:          go1.12.7
OS/Arch:             linux/amd64

Fall 1 Konfiguration:
stack-config.txt

Wie schlagen Sie vor, dies umzusetzen?

Leider habe ich keine Ahnung wo das Problem liegt.

Können Sie dies selbst tun und einen Pull-Request einreichen?

Ich bin möglicherweise nicht in der Lage, eine Lösung zu implementieren, aber ich kann die Dokumentation für die Benutzererstellung und Rechteverwaltung bereitstellen.

ucli

Hilfreichster Kommentar

Wenn ein Benutzer von einem Administrator erstellt wird, werden die Felder state (und admin ) wörtlich aus der Anfrage übernommen. Dies funktioniert wie beabsichtigt, da wir nicht wissen, ob der Administrator state explizit auf REQUESTED gesetzt oder einfach weggelassen hat.

Wenn der Benutzer nicht von einem Administrator erstellt wird, gehen wir davon aus, dass es sein Ziel ist, genehmigt zu werden, und tun dies automatisch, wenn nichts (Administrator-Genehmigungsanforderung) dies verhindert. Sie können sich nie von Anfang an zum Administrator machen.

Die Funktion "Benutzer durch Administrator erstellen" in der Web-Benutzeroberfläche macht deutlicher, dass das Feld state festgelegt werden muss, aber ich denke, es wäre eine gute Idee, einen vernünftigeren Standardwert als REQUESTED zu haben state #$ standardmäßig zu users create APPROVED .

Alle 6 Kommentare

@w4tsn wie ist deine Konfiguration? Benötigen Sie eine Administratorgenehmigung für neue Benutzer?

Können Sie die Ausgabe von $ ttn-lw-cli user get myuser --state zeigen?

Fall 1:

{
  "ids": {
    "user_id": "someadmin"
  },
  "created_at": "2019-08-14T07:20:10.542Z",
  "updated_at": "2019-08-14T07:20:10.542Z",
  "password_updated_at": "0001-01-01T00:00:00Z"
}

Fall 2:

{
  "ids": {
    "user_id": "myuser"
  },
  "created_at": "2019-08-06T10:30:34.091Z",
  "updated_at": "2019-08-06T10:30:34.091Z",
  "password_updated_at": "0001-01-01T00:00:00Z"
}

Ich werde den Abschnitt env mit meiner Fall 1-Konfiguration aktualisieren. In Fall 2 habe ich auch keine explizite Admin-Genehmigung gesetzt. Genehmigung des Konfigurationsstatusadministrators erforderlich = falsch

Ich kann bestätigen, dass das Problem auf 3.1.0 reproduziert werden kann.
Eine mögliche Lösung ist die Verwendung des folgenden manuellen Aktivierungsbefehls: ttn-lw-cli users set norman --state=STATE_APPROVED . Warum das so ist, werde ich demnächst untersuchen.

Da der Status in den obigen Ausgaben nicht erwähnt wird, ist er außerdem null, was STATE_REQUESTED bedeutet, sodass die Benutzer nicht tatsächlich aktiviert werden.

Habe auch die Ursache gefunden:
https://github.com/TheThingsNetwork/lorawan-stack/blob/55381c15f6902508ea34cd40441ad2bd3146ac37/pkg/identityserver/user_registry.go#L149 -L156
Benutzer, die von einem Administrator erstellt wurden, respektieren nicht die Administrator-Genehmigungseinstellung und haben immer den Standardstatus ( STATE_REQUESTED ). Ist das beabsichtigt @htdvisser ?

Wenn ein Benutzer von einem Administrator erstellt wird, werden die Felder state (und admin ) wörtlich aus der Anfrage übernommen. Dies funktioniert wie beabsichtigt, da wir nicht wissen, ob der Administrator state explizit auf REQUESTED gesetzt oder einfach weggelassen hat.

Wenn der Benutzer nicht von einem Administrator erstellt wird, gehen wir davon aus, dass es sein Ziel ist, genehmigt zu werden, und tun dies automatisch, wenn nichts (Administrator-Genehmigungsanforderung) dies verhindert. Sie können sich nie von Anfang an zum Administrator machen.

Die Funktion "Benutzer durch Administrator erstellen" in der Web-Benutzeroberfläche macht deutlicher, dass das Feld state festgelegt werden muss, aber ich denke, es wäre eine gute Idee, einen vernünftigeren Standardwert als REQUESTED zu haben state #$ standardmäßig zu users create APPROVED .

Mit #1190, das die Funktionalität enthält, die ich in meinem vorherigen Kommentar beschrieben habe, kann dieses Problem meiner Meinung nach jetzt geschlossen werden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen