Ich bin verwirrt über den Prozess, den Grafana für abgelaufene Token verwendet. In der Grafana-API- Dokumentation können Sie im Feld secondToLive in der Restanforderung zur API-Schlüsselerstellung einen Ablauf für neue Schlüssel festlegen.
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
Dieses Beispiel zeigt, wie ich implementiere. Nach einer Minute würde ich erwarten, dass der Schlüssel abgelaufen ist, der Schlüssel von der Benutzeroberfläche entfernt wird und der Schlüssel dann erneut erstellt werden kann.
Was ich tatsächlich sehe, ist, dass der Schlüssel abgelaufen ist, der Schlüssel von der Benutzeroberfläche entfernt wurde und ein weiterer Schlüssel mit dem Namen "testKey" nicht mehr erstellt werden kann.
Ist dies ein normales Verhalten bei der Erstellung von API-Schlüsseln? Ich würde denken, dass dies für öffentlich zugängliche API brechen würde. Ist es vielleicht etwas Spezielles für die Grafana-Implementierung von API-Schlüsseln?
Hier ist ein Beispiel für die Antwort vom Server, wenn eine Anforderung für einen Schlüssel gestellt wird, der abgelaufen ist und sich nicht mehr in der Benutzeroberfläche befindet.
{"message":"Failed to add API key"}
Wenn ich den Schlüssel (entweder über die API oder die Benutzeroberfläche) vor seinem Ablauf lösche, kann ich den Schlüssel ohne Probleme erneut erstellen.
Wenn ich versuche, die aktuell im System vorhandenen Schlüssel anzuzeigen, erhalte ich eine leere Liste.
curl -X GET -H "Content-Type: application/json" http://removed:forsecurity<strong i="18">@localhost</strong>:3000/api/auth/keys
[]
Wenn ich den Schlüssel nach Ablauf über die API lösche (dies kann nicht über die Benutzeroberfläche erfolgen, da er dort nicht mehr angezeigt wird), kann ich den Schlüssel erneut erstellen.
Wenn die Schlüssel in einem abgelaufenen Zustand noch in der Datenbank vorhanden sind, möchte ich die Option, sie in der Benutzeroberfläche anzuzeigen. Ich möchte auch, dass sie im API-Aufruf gemeldet werden, um Schlüssel mit einem Feld für den Ablaufstatus aufzulisten.
Bitte lassen Sie mich wissen, wenn Sie zusätzliche Informationen von mir benötigen. Hoffentlich ist dies kein doppeltes Problem.
@ 5w3rv05 Das klingt für mich nach einem Fehler, muss aber bei denjenigen, die es implementieren, überprüft werden, ob die Implementierung aus einem bestimmten Grund ausgewählt wurde.
Ich habe es überprüft, es ist ein Fehler: Die abgelaufenen Schlüssel sollten bei der Erstellung des API-Schlüssels nicht berücksichtigt werden.
Außerdem sollte der API-Aufruf zum Auflisten der API-Schlüssel optional auch die abgelaufenen zurückgeben.
Die abgelaufenen Schlüssel sollten bei der Erstellung des API-Schlüssels nicht berücksichtigt werden
Ich denke, sie sollten / müssen. Der Name ist Teil eines eindeutigen Index.
Zwei Lösungen
1) Abgelaufene Schlüssel automatisch bereinigen (aus der Datenbank entfernen)
2) Zeigen Sie abgelaufene Schlüssel in der Liste an und lassen Sie sie vom Organisationsadministrator manuell entfernen.
Hilfreichster Kommentar
Ich denke, sie sollten / müssen. Der Name ist Teil eines eindeutigen Index.
Zwei Lösungen
1) Abgelaufene Schlüssel automatisch bereinigen (aus der Datenbank entfernen)
2) Zeigen Sie abgelaufene Schlüssel in der Liste an und lassen Sie sie vom Organisationsadministrator manuell entfernen.