Während ich Ihre Frage las, habe ich erfolglos versucht, im Internet zu suchen, wie Bearer-Token verschlüsselt oder signiert sind. Ich denke, Inhaber-Token werden nicht gehasht (möglicherweise teilweise, aber nicht vollständig), da es in diesem Fall nicht möglich ist, sie zu entschlüsseln und Benutzereigenschaften daraus abzurufen.
Ihre Frage scheint jedoch zu versuchen, Antworten auf die Bearer-Token-Funktionalität zu finden:
Angenommen, ich implementiere einen Autorisierungsanbieter. Kann ich eine beliebige Zeichenfolge für das Inhaber-Token angeben? Kann es eine zufällige Zeichenfolge sein? Muss es sich um eine Base64-Codierung einiger Attribute handeln? Sollte es gehasht werden?
Also werde ich versuchen zu erklären, wie Bearer-Token und Refresh-Token funktionieren:
Wenn der Benutzer beim Server ein Token anfordert, das Benutzer und Kennwort über SSL sendet, gibt der Server zwei Dinge zurück: ein Zugriffstoken und ein Aktualisierungstoken .
Ein Zugriffstoken ist ein Inhaber-Token, das Sie allen Anforderungsheadern hinzufügen müssen, um als konkreter Benutzer authentifiziert zu werden.
Authorization: Bearer <access_token>
Ein Zugriffstoken ist eine verschlüsselte Zeichenfolge mit allen gewünschten Benutzereigenschaften, Ansprüchen und Rollen. (Sie können überprüfen, ob die Größe eines Tokens zunimmt, wenn Sie weitere Rollen oder Ansprüche hinzufügen.) Sobald der Ressourcenserver ein Zugriffstoken erhält, kann er es entschlüsseln und diese Benutzereigenschaften lesen. Auf diese Weise wird der Benutzer zusammen mit der gesamten Anwendung validiert und gewährt.
Zugriffstoken haben einen kurzen Ablauf (dh 30 Minuten). Wenn Zugriffstoken einen langen Ablauf haben würden, wäre dies ein Problem, da theoretisch keine Möglichkeit besteht, sie zu widerrufen. Stellen Sie sich also einen Benutzer mit einer Rolle = "Admin" vor, die sich in "Benutzer" ändert. Wenn ein Benutzer das alte Token mit der Rolle "Admin" behält, kann er bis zum Ablauf des Tokens mit Administratorrechten darauf zugreifen. Aus diesem Grund haben Zugriffstoken einen kurzen Ablauf.
Es kommt jedoch ein Problem in den Sinn. Wenn ein Zugriffstoken kurz abläuft, müssen wir den Benutzer und das Passwort in jedem kurzen Zeitraum senden. Ist das sicher? Nein, ist es nicht. Wir sollten es vermeiden. In diesem Moment scheinen Token zu aktualisieren, um dieses Problem zu lösen.
Aktualisierungstoken werden in der Datenbank gespeichert und haben einen langen Ablauf (Beispiel: 1 Monat).
Ein Benutzer kann mithilfe eines Aktualisierungstokens, das der Benutzer bei der ersten Anforderung eines Tokens erhalten hat, ein neues Zugriffstoken erhalten (wenn es beispielsweise alle 30 Minuten abläuft). Wenn ein Zugriffstoken abläuft, muss der Client ein Aktualisierungstoken senden. Wenn dieses Aktualisierungstoken in der Datenbank vorhanden ist, gibt der Server ein neues Zugriffstoken und ein weiteres Aktualisierungstoken an den Client zurück (und ersetzt das alte Aktualisierungstoken durch das neue).
Falls ein Benutzerzugriffstoken kompromittiert wurde, muss das Aktualisierungstoken dieses Benutzers aus der Datenbank gelöscht werden. Auf diese Weise ist das Token nur so lange gültig, bis das Zugriffstoken abläuft. Wenn der Hacker versucht, ein neues Zugriffstoken zu erhalten, das das Aktualisierungstoken sendet, wird diese Aktion abgelehnt.