Estou confuso com o processo que Grafana está usando para tokens expirados. A partir da documentação da API Grafana, o campo secondsToLive na solicitação de resto de criação de chave API permite que você defina uma expiração para novas chaves.
curl
-X POST
-H "Content-Type: application/json"
-d '{
"name":"testKey",
"role":"Admin",
"secondsToLive":60
}'
http://removed:forsecurity<strong i="7">@localhost</strong>:3000/api/auth/keys
Este exemplo mostra como estou implementando. Depois de um minuto, eu esperaria que a chave expirasse, a chave removida da IU e a chave pudesse ser criada novamente.
O que estou realmente vendo é que a chave expirou, a chave foi removida da IU e outra chave com esse nome "testKey" não pode mais ser criada.
Este é um comportamento normal com a criação de chave de API? Eu acho que isso seria uma falha para API voltada ao público. É talvez algo específico para a implementação Grafana de chaves API?
Aqui está um exemplo da resposta do servidor quando uma solicitação é feita para uma chave que expirou e não está mais na IU.
{"message":"Failed to add API key"}
Se eu excluir a chave (por meio da API ou da IU) antes de sua expiração, posso criar a chave novamente sem problemas.
Quando tento visualizar as chaves atualmente presentes no sistema, recebo uma lista vazia.
curl -X GET -H "Content-Type: application/json" http://removed:forsecurity<strong i="18">@localhost</strong>:3000/api/auth/keys
[]
Se eu excluir a chave por meio da API após a expiração (não posso fazer isso por meio da IU, pois ela não aparece mais lá), poderei criar a chave novamente.
Se as chaves ainda existirem no banco de dados em um estado expirado, gostaria da opção de visualizá-las na IU. Eu também gostaria que eles fossem relatados na chamada de API para listar as chaves com um campo para status de expiração.
Informe-nos se precisar de mais informações. Esperançosamente, este não é um problema duplicado.
@ 5w3rv05 isso soa como um bug para mim, mas preciso verificar com os que estão implementando se a implementação foi selecionada por algum motivo especial.
Eu verifiquei, é um bug: as chaves expiradas não devem ser consideradas durante a criação da chave de API.
Além disso, a chamada de API para listar as chaves de API deve, opcionalmente, retornar também as expiradas.
as chaves expiradas não devem ser levadas em consideração durante a criação da chave de API
Eu acho que eles deveriam / precisam. O nome faz parte de um índice exclusivo.
Duas soluções
1) Limpar automaticamente (remover do banco de dados) as chaves expiradas
2) Mostre as chaves expiradas na lista e deixe o administrador da organização removê-las manualmente.
Comentários muito úteis
Eu acho que eles deveriam / precisam. O nome faz parte de um índice exclusivo.
Duas soluções
1) Limpar automaticamente (remover do banco de dados) as chaves expiradas
2) Mostre as chaves expiradas na lista e deixe o administrador da organização removê-las manualmente.