Anti-Pattern: Lange Ablaufzeit für OAuth-Tokens festlegen

Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.

Apigee stellt das OAuth 2.0-Framework zum Sichern von APIs bereit. OAuth2 ist eines der gängigsten offenen, tokenbasierten Authentifizierungs- und Autorisierungsschemen. Damit können Client-Anwendungen im Namen von Nutzern auf APIs zugreifen, ohne dass die Nutzer Nutzernamen und Passwort preisgeben müssen.

Mit Apigee können Entwickler Zugriffs- und/oder Aktualisierungs-Token generieren. Dazu müssen Sie einen der vier OAuth2-Grant-Typen – Client-Anmeldedaten, Passwort, Implizit und Autorisierungscode – mit der OAuthv2-Richtlinie implementieren. Clientanwendungen verwenden Zugriffstoken, um sichere APIs zu nutzen. Für jedes Zugriffstoken gilt ein eigenes Ablaufdatum, das in der OAuthv2-Richtlinie bestimmt werden kann.

Aktualisierungstoken werden optional mit einigen Grant-Typen zusammen mit Zugriffstoken ausgegeben. Mit Aktualisierungstoken werden neue, gültige Zugriffstoken abgerufen, nachdem das ursprüngliche Zugriffstoken abgelaufen oder widerrufen wurde. Die Ablaufzeit für Aktualisierungstoken kann auch in der OAuthv2-Richtlinie festgelegt werden.

Anti-Pattern

Wenn Sie in der OAuthv2-Richtlinie eine lange Ablaufzeit für ein Zugriffs- und/oder ein Aktualisierungstoken festlegen, führt dies zu einer Akkumulation von OAuth-Token und zur erhöhten Nutzung des Speicherplatzes auf Cassandra-Knoten.

Die folgende OAuthV2-Beispielrichtlinie bestimmt eine lange Ablaufzeit von 200 Tagen für Aktualisierungstoken:

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

Im obigen Beispiel:

  • Das Zugriffstoken ist auf eine eher geringe Ablaufzeit von 30 Minuten eingestellt.
  • Das Aktualisierungstoken hat eine sehr lange Ablaufzeit von 200 Tagen.
  • Wenn der Traffic zu dieser API zehn Anfragen pro Sekunde beträgt, kann das bis zu 864.000 Token pro Tag generieren.
  • Da die Aktualisierungstoken erst nach 200 Tagen ablaufen, bleiben sie für einen längeren Zeitraum im Datenspeicher (Cassandra), was zu einer ständigen Akkumulation führt.

Auswirkungen

  • Bedingt eine erhebliche Steigerung der Speicherplatznutzung im Datenspeicher (Cassandra).

Best Practice

Verwenden Sie eine geeignete, kürzere Ablaufzeit für den OAuth-Zugriff und die Aktualisierungstoken, abhängig von Ihren spezifischen Sicherheitsanforderungen, damit diese Token schnell entfernt werden und so eine Akkumulation verhindert wird.

Legen Sie die Ablaufzeit für Aktualisierungstoken so fest, dass sie etwas länger ist als die der Zugriffstoken. Wenn Sie beispielsweise 30 Minuten für das Zugriffstoken festlegen, müssen Sie mindestens 24 Stunden für das Aktualisierungstoken festlegen.

Dadurch wird Folgendes gewährleistet:

  • Nach der Ablauf des Zugriffstokens können Sie einige Aktualisierungstokens verwenden, um neue Zugriffs- und Aktualisierungstokens zu generieren.
  • Die Aktualisierungstoken laufen etwas später ab und können zeitnah gelöscht werden, um eine Akkumulation zu vermeiden.

Weitere Informationen