Ao criar um usuário admin na CLI pode acontecer que este usuário não tenha direitos suficientes no Console para criar ou editar Gateways e Aplicativos. Em outro caso, um novo usuário normal também não tem permissões no console para fazer nada. Pode ser um bug ou apenas falta de documentação sobre como criar usuários corretamente.
Eu não tenho certeza. São dois casos aqui que podem estar relacionados à mesma causa. No primeiro caso estou operando em uma máquina que não foi configurada por mim e tenho informações limitadas sobre o processo.
Caso 1: pilha estrangeira; configurado como versão 3.0.0 e atualizado para 3.1.0 antes de usar o Console.
--admin
usuário (*O que aconteceu na atualização foi que o processo de criação do console foi feito com uris errados, então excluímos o cliente do console no banco de dados e reutilizamos o comando is-db
. Talvez tenhamos estragado tudo aqui.
Caso 2 : Na minha configuração:
ttn-lw-cli users create norman --name norman --primary-email-address norman@localhost
usando o usuário admin desde o inícioEm ambos os casos, o Console responde com Insufficient rights for user 'myuser'
após inserir os detalhes e pressionar o botão Create Gateway
ou Create Application
.
No console do navegador não há nada incomum. A guia de rede mostra uma resposta 403 Forbidden de ttn.
Ao criar um aplicativo na CLI com o usuário admin e atribuí-lo ao usuário em questão, o usuário pode ver o aplicativo/gateway, mas clicar nele produz um 403 Forbidden.
De qualquer forma, eu esperaria que um novo usuário criado pudesse pelo menos criar gateways e aplicativos para si mesmo e poder abrir suas visualizações quando adicionado como colaborador.
Eu também esperaria mais documentação sobre o processo de criação de usuários e como gerenciar os direitos do usuário.
The Things Network Stack for LoRaWAN: ttn-lw-stack
Version: 3.1.0
Go version: go1.12.7
OS/Arch: linux/amd64
Configuração do caso 1:
stack-config.txt
Infelizmente não faço ideia de onde está o problema.
Posso não conseguir implementar uma correção, mas posso fornecer a documentação para a criação do usuário e o gerenciamento de direitos.
@w4tsn qual é a sua configuração? Você está exigindo aprovação do administrador para novos usuários?
Você pode mostrar a saída de $ ttn-lw-cli user get myuser --state
?
Caso 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"
}
Caso 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"
}
Vou atualizar a seção env com a configuração do meu caso 1. No caso 2, também não defini explicitamente a aprovação do administrador. A aprovação do administrador do estado de configuração necessária = false
Posso confirmar que o problema pode ser reproduzido em 3.1.0.
Uma possível correção é usar o seguinte comando de ativação manual: ttn-lw-cli users set norman --state=STATE_APPROVED
. Vou investigar por que isso acontece em breve.
Além disso, nas saídas acima, como o estado não é mencionado, é zero, o que significa STATE_REQUESTED
, portanto, os usuários não são realmente ativados.
Também encontrei a causa:
https://github.com/TheThingsNetwork/lorawan-stack/blob/55381c15f6902508ea34cd40441ad2bd3146ac37/pkg/identityserver/user_registry.go#L149 -L156
Os usuários criados por um administrador não respeitam a configuração de aprovação do administrador e sempre têm o estado padrão ( STATE_REQUESTED
). Isso é pretendido @htdvisser ?
Se um usuário for criado por um administrador, os campos state
(e admin
) serão retirados literalmente da solicitação. Isso funciona como pretendido, pois não sabemos se o administrador definiu explicitamente o state
REQUESTED
ou apenas o deixou de fora.
Se o usuário não for criado por um administrador, assumimos que seu objetivo é ser aprovado e fazer isso automaticamente se nada (requisito de aprovação do administrador) impedir isso. Eles nunca podem se tornar administradores desde o início.
A funcionalidade "criar usuário por administrador" na interface do usuário da web deixará mais claro que o campo state
precisa ser definido, mas acho que seria uma boa ideia ter um padrão mais sensato do que REQUESTED
, então vamos alterar a CLI e fazer o sinalizador state
de users create
APPROVED
por padrão.
Com #1190, que inclui a funcionalidade que descrevi no meu comentário anterior, acho que esse problema pode ser encerrado.
Comentários muito úteis
Se um usuário for criado por um administrador, os campos
state
(eadmin
) serão retirados literalmente da solicitação. Isso funciona como pretendido, pois não sabemos se o administrador definiu explicitamente ostate
REQUESTED
ou apenas o deixou de fora.Se o usuário não for criado por um administrador, assumimos que seu objetivo é ser aprovado e fazer isso automaticamente se nada (requisito de aprovação do administrador) impedir isso. Eles nunca podem se tornar administradores desde o início.
A funcionalidade "criar usuário por administrador" na interface do usuário da web deixará mais claro que o campo
state
precisa ser definido, mas acho que seria uma boa ideia ter um padrão mais sensato do queREQUESTED
, então vamos alterar a CLI e fazer o sinalizadorstate
deusers create
APPROVED
por padrão.