Signaturschlüssel
Logto OIDC-Signaturschlüssel, auch bekannt als "OIDC-Private Keys" und "OIDC-Cookie-Keys", sind die Signaturschlüssel, die verwendet werden, um JWTs (Zugangstokens und ID-Tokens) sowie Browser-Cookies in Logto Anmeldesitzungen zu signieren. Diese Signaturschlüssel werden beim Initialisieren der Logto-Datenbank (Open-Source) oder beim Erstellen eines neuen Mandanten (Cloud) generiert und können über die CLI (Open-Source), Management APIs oder die Console UI verwaltet werden.
Standardmäßig verwendet Logto den Elliptische-Kurven-Algorithmus (EC), um digitale Signaturen zu erzeugen. Da Benutzer jedoch häufig JWT-Signaturen überprüfen müssen und viele ältere Tools den EC-Algorithmus nicht unterstützen (sondern nur RSA), haben wir die Möglichkeit implementiert, private Schlüssel zu rotieren und den Signaturalgorithmus auszuwählen (einschließlich sowohl RSA als auch EC). Dies stellt die Kompatibilität mit Diensten sicher, die veraltete Signaturüberprüfungstools verwenden.
Theoretisch sollten Signaturschlüssel nicht kompromittiert werden und haben keine Ablaufzeit, was bedeutet, dass sie nicht rotiert werden müssen. Dennoch kann das regelmäßige Rotieren des Signaturschlüssels nach einer bestimmten Zeit die Sicherheit erhöhen.
Wie funktioniert das?
- OIDC-Private Key
Beim Initialisieren einer Logto-Instanz wird automatisch ein Schlüsselpaar aus öffentlichem und privatem Schlüssel generiert und im zugrunde liegenden OIDC-Provider registriert. Wenn Logto ein neues JWT (Zugangstoken oder ID-Token) ausstellt, wird das Token mit dem privaten Schlüssel signiert. Gleichzeitig kann jede Client-Anwendung, die ein JWT erhält, den zugehörigen öffentlichen Schlüssel verwenden, um die Signatur des Tokens zu überprüfen und sicherzustellen, dass das Token nicht von Dritten manipuliert wurde. Der private Schlüssel ist auf dem Logto-Server geschützt. Der öffentliche Schlüssel hingegen ist, wie der Name schon sagt, für jeden zugänglich und kann über die
/oidc/jwks
-Schnittstelle des OIDC-Endpunkts abgerufen werden. Ein Signaturschlüssel-Algorithmus kann beim Generieren des privaten Schlüssels angegeben werden, und Logto verwendet standardmäßig den EC (Elliptische Kurve) Algorithmus. Die Administratoren können den Standardalgorithmus durch Rotieren der privaten Schlüssel auf RSA (Rivest-Shamir-Adleman) ändern. - OIDC-Cookie-Key Wenn ein Benutzer einen Anmelde- oder Registrierungsprozess startet, wird auf dem Server eine "OIDC-Sitzung" sowie eine Reihe von Browser-Cookies erstellt. Mit diesen Cookies kann der Browser die Logto Experience API nutzen, um im Namen des Benutzers eine Reihe von Interaktionen durchzuführen, wie z. B. Anmeldung, Registrierung und Passwort zurücksetzen. Im Gegensatz zu JWTs werden die Cookies jedoch nur von Logto OIDC selbst signiert und überprüft, asymmetrische Kryptografie ist nicht erforderlich. Daher gibt es keine zugehörigen öffentlichen Schlüssel für Cookie-Signaturschlüssel und auch keine asymmetrischen Verschlüsselungsalgorithmen.
Signaturschlüssel über die Console UI rotieren
Logto bietet die Funktion "Signaturschlüssel-Rotation", mit der du einen neuen OIDC-Private Key und Cookie-Key in deinem Mandanten erstellen kannst.
-
Navigiere zu Console > Signaturschlüssel. Dort kannst du sowohl OIDC-Private Keys als auch OIDC-Cookie-Keys verwalten.
-
Um den Signaturschlüssel zu rotieren, klicke auf die Schaltfläche "Private Keys rotieren" oder "Cookie Keys rotieren". Beim Rotieren der privaten Schlüssel hast du die Möglichkeit, den Signaturalgorithmus zu ändern.
-
Du findest eine Tabelle, die alle verwendeten Signaturschlüssel auflistet. Hinweis: Du kannst den vorherigen Schlüssel löschen, aber nicht den aktuellen.
Status Beschreibung Aktuell Dies zeigt an, dass dieser Schlüssel derzeit aktiv in deinen Anwendungen und APIs verwendet wird. Vorherig Bezieht sich auf einen Schlüssel, der zuvor verwendet wurde, aber rotiert wurde. Bestehende Tokens mit diesem Schlüssel bleiben gültig.
Bitte beachte, dass die Rotation die folgenden drei Aktionen umfasst:
- Erstellen eines neuen Signaturschlüssels: Dadurch müssen alle deine Anwendungen und APIs den neuen Signaturschlüssel übernehmen.
- Rotation des aktuellen Schlüssels: Der bestehende Schlüssel wird nach der Rotation als "vorherig" gekennzeichnet und nicht mehr von neu erstellten Anwendungen und APIs verwendet. Tokens, die mit diesem Schlüssel signiert wurden, bleiben jedoch weiterhin gültig.
- Entfernen des vorherigen Schlüssels: Schlüssel mit der Kennzeichnung "vorherig" werden widerrufen und aus der Tabelle entfernt.
Rotiere niemals Signaturschlüssel hintereinander (zwei- oder mehrmals), da dies ALLE ausgestellten Tokens ungültig machen kann.
- Für OSS-Nutzer ist nach dem Rotieren des Signaturschlüssels ein Neustart der Logto-Instanz erforderlich, damit der neue Signaturschlüssel wirksam wird.
- Für Cloud-Nutzer wird der neue Signaturschlüssel unmittelbar nach der Rotation wirksam, aber stelle sicher, dass du den Signaturschlüssel nicht mehrfach hintereinander rotierst.
Verwandte Ressourcen
Einführung in EC- und RSA-Signaturalgorithmen in JWT