我对Grafana用于过期令牌的过程感到困惑。 从Grafana API文档中,API密钥创建其余请求中的secondsToLive字段允许您设置新密钥的到期时间。
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
这个例子展示了我是如何实现的。 一分钟后,我希望密钥会过期,将密钥从UI中删除,然后可以再次创建该密钥。
我实际上看到的是该密钥已过期,该密钥已从UI中删除,并且不再可以创建名称为“ testKey”的另一个密钥。
api密钥创建是否属于这种正常行为? 我认为这将对面向公众的API造成破坏。 它可能是特定于Grafana API密钥实现的东西吗?
这是当请求已过期且不再存在于UI中的密钥时服务器响应的示例。
{"message":"Failed to add API key"}
如果我在密钥过期之前(通过API或UI)删除了密钥,则可以再次创建密钥而不会出现问题。
当我尝试查看系统中当前存在的密钥时,我收到一个空列表。
curl -X GET -H "Content-Type: application/json" http://removed:forsecurity<strong i="18">@localhost</strong>:3000/api/auth/keys
[]
如果我在过期后通过API删除了密钥(由于不再显示在UI上,所以无法通过UI进行删除),则可以再次创建密钥。
如果密钥仍然以过期状态存在于数据库中,我希望可以选择在UI中查看它们。 我还希望在API调用中报告它们,以列出带有过期状态字段的键。
如果您需要我提供任何其他信息,请告诉我。 希望这不是重复的问题。
@ 5w3rv05对我来说听起来像是个错误,但是如果由于某些特殊原因选择了实现,则需要与实现它的人员进行验证。
我已经验证了它,这是一个错误:api密钥创建期间不应考虑过期的密钥。
同样,用于列出api密钥的API调用也应该有选择地返回过期的api密钥。
api密钥创建期间不应考虑已过期的密钥
我认为他们应该/需要。 该名称是唯一索引的一部分。
两种解决方案
1)自动清理(从数据库中删除)过期的密钥
2)在列表中显示过期的密钥,并让组织管理员手动删除它们。
最有用的评论
我认为他们应该/需要。 该名称是唯一索引的一部分。
两种解决方案
1)自动清理(从数据库中删除)过期的密钥
2)在列表中显示过期的密钥,并让组织管理员手动删除它们。