Lors de la création d'un utilisateur admin dans la CLI, il peut arriver que cet utilisateur ne dispose pas de droits suffisants dans la console pour créer ou modifier des passerelles et des applications. Dans un autre cas, un nouvel utilisateur normal n'a également aucune autorisation dans la console pour faire quoi que ce soit. Il peut s'agir d'un bogue ou simplement d'une documentation manquante sur la façon de créer correctement des utilisateurs.
Je ne suis pas tout à fait sûr. Il s'agit ici de deux cas qui peuvent être liés à la même cause. Dans le premier cas, j'opère sur une machine qui n'a pas été configurée par moi et j'ai des informations limitées sur le processus.
Cas 1 : pile étrangère ; configuré en tant que version 3.0.0 et mis à niveau vers 3.1.0 avant d'utiliser la console.
--admin
utilisateur (* Ce qui s'est passé lors de la mise à niveau, c'est que le processus de création de la console a été effectué avec de mauvais uri, nous avons donc supprimé le client de la console dans la base de données et réutilisé la commande is-db
. Peut-être qu'on a merdé ici.
Cas 2 : Sur ma configuration :
ttn-lw-cli users create norman --name norman --primary-email-address norman@localhost
en utilisant l'utilisateur admin depuis le démarrageDans les deux cas, la console répond par Insufficient rights for user 'myuser'
après avoir entré les détails et appuyé sur le bouton Create Gateway
ou Create Application
.
Dans la console du navigateur, il n'y a rien d'inhabituel. L'onglet réseau affiche une réponse 403 Forbidden de ttn.
Lors de la création d'une application via la CLI avec l'utilisateur admin et de son attribution à l'utilisateur en question, l'utilisateur peut voir l'application/passerelle mais cliquer dessus génère un 403 Forbidden.
Dans tous les cas, je m'attendrais à ce qu'un nouvel utilisateur créé puisse au moins créer des passerelles et des applications pour lui-même et puisse ouvrir ses vues lorsqu'il est ajouté en tant que collaborateur.
Je m'attendrais également à plus de documentation sur le processus de création d'utilisateurs et sur la gestion des droits des utilisateurs.
The Things Network Stack for LoRaWAN: ttn-lw-stack
Version: 3.1.0
Go version: go1.12.7
OS/Arch: linux/amd64
Configuration du cas 1 :
pile-config.txt
Malheureusement, je n'ai aucune idée d'où vient le problème.
Je ne suis peut-être pas en mesure d'implémenter un correctif, mais je peux fournir la documentation pour la création d'utilisateurs et la gestion des droits.
@w4tsn quelle est votre configuration ? Avez-vous besoin de l'approbation de l'administrateur pour les nouveaux utilisateurs ?
Pouvez-vous montrer la sortie de $ ttn-lw-cli user get myuser --state
?
Cas 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"
}
Cas 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"
}
Je mettrai à jour la section env avec la configuration de mon cas 1. Dans le cas 2, je n'ai pas non plus défini explicitement l'approbation de l'administrateur. L'approbation de l'administrateur de l'état de la configuration est requise = false
Je peux confirmer que le problème peut être reproduit sur 3.1.0.
Une solution possible consiste à utiliser la commande d'activation manuelle suivante : ttn-lw-cli users set norman --state=STATE_APPROVED
. Je vais voir pourquoi cela se produit bientôt.
De plus, dans les sorties ci-dessus, puisque l'état n'est pas mentionné, il est égal à zéro, ce qui signifie STATE_REQUESTED
, donc les utilisateurs ne sont pas réellement activés.
A également trouvé la cause :
https://github.com/TheThingsNetwork/lorawan-stack/blob/55381c15f6902508ea34cd40441ad2bd3146ac37/pkg/identityserver/user_registry.go#L149 -L156
Les utilisateurs créés par un administrateur ne respectent pas le paramètre d'approbation de l'administrateur et ont toujours un état par défaut ( STATE_REQUESTED
). Est-ce voulu @htdvisser ?
Si un utilisateur est créé par un administrateur, les champs state
(et admin
) sont extraits littéralement de la requête. Cela fonctionne comme prévu, car nous ne savons pas si l'administrateur a explicitement défini le state
sur REQUESTED
ou s'il l'a simplement omis.
Si l'utilisateur n'est pas créé par un administrateur, nous supposons que son objectif est d'être approuvé, et le faisons automatiquement si rien (exigence d'approbation de l'administrateur) ne l'empêche. Ils ne peuvent jamais se faire administrateur dès le départ.
La fonctionnalité "créer un utilisateur par administrateur" dans l'interface utilisateur Web indiquera plus clairement que le champ state
doit être défini, mais je pense que ce serait une bonne idée d'avoir une valeur par défaut plus saine que REQUESTED
, alors changeons la CLI et faisons le drapeau state
de users create
APPROVED
par défaut.
Avec #1190, qui inclut la fonctionnalité que j'ai décrite dans mon commentaire précédent, je pense que ce problème peut maintenant être clos.
Commentaire le plus utile
Si un utilisateur est créé par un administrateur, les champs
state
(etadmin
) sont extraits littéralement de la requête. Cela fonctionne comme prévu, car nous ne savons pas si l'administrateur a explicitement défini lestate
surREQUESTED
ou s'il l'a simplement omis.Si l'utilisateur n'est pas créé par un administrateur, nous supposons que son objectif est d'être approuvé, et le faisons automatiquement si rien (exigence d'approbation de l'administrateur) ne l'empêche. Ils ne peuvent jamais se faire administrateur dès le départ.
La fonctionnalité "créer un utilisateur par administrateur" dans l'interface utilisateur Web indiquera plus clairement que le champ
state
doit être défini, mais je pense que ce serait une bonne idée d'avoir une valeur par défaut plus saine queREQUESTED
, alors changeons la CLI et faisons le drapeaustate
deusers create
APPROVED
par défaut.