Zum Hauptinhalt springen

Signaturschlüssel

Logto OIDC-Signaturschlüssel, auch bekannt als "OIDC-Private Keys" und "OIDC-Cookie-Keys", sind die Signaturschlüssel, die verwendet werden, um JWT-Tokens (Zugangstokens und ID-Tokens) und Browser-Cookies in Logto-Anmeldesitzungen zu signieren. Diese Signaturschlüssel werden beim Seeding der Logto-Datenbank (Open-Source) oder beim Erstellen eines neuen Mandanten (Cloud) generiert und können über CLI (Open-Source), Management APIs oder die Console UI verwaltet werden.

Standardmäßig verwendet Logto den Elliptic Curve (EC) Algorithmus, 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 (nur RSA unterstützen), haben wir die Funktionalität implementiert, private Schlüssel zu rotieren und Benutzern die Wahl des Signaturalgorithmus zu ermöglichen (einschließlich sowohl RSA als auch EC). Dies gewährleistet die Kompatibilität mit Diensten, die veraltete Signaturüberprüfungstools verwenden.

hinweis

Theoretisch sollten Signaturschlüssel nicht geleakt werden und haben keine Ablaufzeit, was bedeutet, dass es nicht notwendig ist, sie zu rotieren. Das regelmäßige Rotieren des Signaturschlüssels nach einem bestimmten Zeitraum kann jedoch die Sicherheit erhöhen.

Wie funktioniert es?

  • OIDC-Private Key
    Beim Initialisieren einer Logto-Instanz wird automatisch ein Paar aus öffentlichem und privatem Schlüssel generiert und im zugrunde liegenden OIDC-Anbieter registriert. Wenn Logto ein neues JWT-Token (Zugangstoken oder ID-Token) ausstellt, wird das Token mit dem privaten Schlüssel signiert. Gleichzeitig kann jede Client-Anwendung, die ein JWT-Token erhält, den gepaarten öffentlichen Schlüssel verwenden, um die Tokensignatur zu überprüfen, um 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 öffentlich zugänglich und kann über die /oidc/jwks-Schnittstelle des OIDC-Endpunkts abgerufen werden. Ein Signaturschlüsselalgorithmus kann beim Generieren des privaten Schlüssels angegeben werden, und Logto verwendet standardmäßig den EC (Elliptic Curve) 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 Registrierungsfluss initiiert, wird auf dem Server eine "OIDC-Sitzung" erstellt, sowie eine Reihe von Browser-Cookies. Mit diesen Cookies kann der Browser die Logto Experience API anfordern, um eine Reihe von Interaktionen im Namen des Benutzers durchzuführen, wie z. B. Anmelden, Registrieren und Passwort zurücksetzen. Im Gegensatz zu den JWT-Tokens werden die Cookies jedoch nur von Logto OIDC-Dienst selbst signiert und überprüft, asymmetrische Kryptographiemaßnahmen sind nicht erforderlich. Daher haben wir keine gepaarten öffentlichen Schlüssel für Cookie-Signaturschlüssel, noch asymmetrische Verschlüsselungsalgorithmen.

Signaturschlüssel über die Console UI rotieren

Logto führt eine Funktion zur "Rotation von Signaturschlüsseln" ein, die es dir ermöglicht, einen neuen OIDC-Private Key und Cookie-Key in deinem Mandanten zu erstellen.

  1. Navigiere zu Console > Signaturschlüssel. Von dort aus kannst du sowohl OIDC-Private Keys als auch OIDC-Cookie-Keys verwalten.

  2. 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.

  3. Du findest eine Tabelle, die alle verwendeten Signaturschlüssel auflistet. Hinweis: Du kannst den vorherigen Schlüssel löschen, aber nicht den aktuellen.

    StatusBeschreibung
    AktuellDies zeigt an, dass dieser Schlüssel derzeit aktiv in deinen Anwendungen und APIs verwendet wird.
    VorherigBezieht sich auf einen Schlüssel, der zuvor verwendet wurde, aber rotiert wurde. Bestehende Tokens mit diesem Signaturschlüssel bleiben gültig.

Bitte denke daran, dass die Rotation die folgenden drei Aktionen umfasst:

  1. Erstellen eines neuen Signaturschlüssels: Dies erfordert, dass alle deine Anwendungen und APIs den neuen Signaturschlüssel übernehmen.
  2. Rotieren des aktuellen Schlüssels: Der bestehende Schlüssel wird nach der Rotation als "vorherig" bezeichnet und nicht mehr von neu erstellten Anwendungen und APIs verwendet. Tokens, die mit diesem Schlüssel signiert wurden, bleiben jedoch gültig.
  3. Entfernen deines vorherigen Schlüssels: Schlüssel, die als "vorherig" gekennzeichnet sind, werden widerrufen und aus der Tabelle entfernt.
warnung

Drehe niemals Signaturschlüssel hintereinander (zwei oder mehr Mal), da dies ALLE ausgegebenen Tokens ungültig machen kann.

  • Für OSS-Benutzer ist nach dem Rotieren des Signaturschlüssels ein Neustart der Logto-Instanz erforderlich, damit der neue Signaturschlüssel wirksam wird.
  • Für Cloud-Benutzer wird der neue Signaturschlüssel sofort nach der Rotation wirksam, aber bitte stelle sicher, dass du den Signaturschlüssel nicht mehrmals hintereinander rotierst.