Antywzór: ustaw długi czas ważności tokenów OAuth

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Apigee Edge udostępnia platformę OAuth 2.0 do zabezpieczania interfejsów API. OAuth2 to jeden z najpopularniejszych otwartych standardów, oparty na tokenach schemat uwierzytelniania i autoryzacji. Umożliwia on aplikacjom klienckim dostęp do interfejsów API w imieniu użytkowników bez konieczności ujawniania przez nich nazwy użytkownika i hasła.

Apigee Edge umożliwia deweloperom generowanie tokenów dostępu lub odświeżania przez wdrożenie dowolnego z 4 typów uwierzytelniania OAuth2 – dane uwierzytelniające klienta, hasło, niejawne i kod autoryzacji – za pomocą zasady OAuthv2. Aplikacje klienckie używają tokenów dostępu do korzystania z bezpiecznych interfejsów API. Każdy token dostępu ma własny czas ważności, który można ustawić w zasadzie OAuthv2.

Tokeny odświeżania są opcjonalnie wydawane wraz z tokenami dostępu w przypadku niektórych typów uwierzytelniania. Tokeny odświeżania służą do uzyskiwania nowych, prawidłowych tokenów dostępu po wygaśnięciu lub unieważnieniu pierwotnego tokena dostępu. Czas wygaśnięcia tokenów odświeżania można też ustawić w zasadzie OAuthv2.

Antywzorzec

Ustawienie długiego czasu ważności tokena dostępu lub tokena odświeżania w zasadzie OAuthv2 prowadzi do gromadzenia się tokenów OAuth i zwiększenia wykorzystania miejsca na dysku w węzłach Cassandra.

Ten przykład zasady OAuthV2 pokazuje długi czas ważności tokenów odświeżania wynoszący 200 dni:

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

W powyższym przykładzie:

  • Token dostępu ma stosunkowo krótki czas ważności wynoszący 30 minut.
  • Token odświeżania ma bardzo długi czas ważności wynoszący 200 dni.
  • Jeśli ruch do tego interfejsu API wynosi 10 żądań na sekundę, może on wygenerować nawet 864 tys. tokenów dziennie.
  • Ponieważ tokeny odświeżania wygasają dopiero po 200 dniach, są one przechowywane w magazynie danych (Cassandra) przez długi czas, co prowadzi do ich ciągłego gromadzenia się.

Wpływ

  • Prowadzi do znacznego wzrostu wykorzystania miejsca na dysku w magazynie danych (Cassandra).
  • W przypadku użytkowników chmury prywatnej może to zwiększyć koszty przechowywania danych lub w najgorszym przypadku spowodować zapełnienie dysku i błędy w czasie działania lub awarię.

Sprawdzona metoda

Użyj odpowiednio krótkiego czasu ważności tokenów dostępu i odświeżania OAuth, aby szybko je usuwać i uniknąć ich gromadzenia się.

Ustaw czas ważności tokenów odświeżania tak, aby był on nieco dłuższy niż czas ważności tokenów dostępu. Na przykład ustaw 30 minut dla tokena dostępu i 60 minut dla tokena odświeżania.

Dzięki temu:

  • Po wygaśnięciu tokena dostępu masz wystarczająco dużo czasu, aby użyć tokena odświeżania do wygenerowania nowych tokenów dostępu i odświeżania.
  • Tokeny odświeżania wygasną nieco później i można je usunąć w odpowiednim czasie, aby uniknąć ich gromadzenia się.

Więcej informacji