Antywzór: nie ustawiaj czasu ważności tokenów OAuth

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Apigee Edge zapewnia platformę OAuth 2.0 do: bezpiecznych interfejsów API. OAuth2 to jeden z najpopularniejszych, otwartych standardów uwierzytelniania opartych na tokenach. schematów autoryzacji. Umożliwia aplikacjom klienckim dostęp do interfejsów API w imieniu użytkowników bez wymaganie od użytkowników podania nazwy użytkownika i hasła.

Apigee Edge umożliwia programistom generowanie tokenów dostępu lub odświeżania przez wdrożenie jednego z 4 typy uwierzytelnienia przez OAuth2: dane logowania klienta, password, implicit oraz kod autoryzacji – używając zasad OAuthv2. Aplikacje klienckie używają tokenów dostępu do korzystania z bezpiecznych interfejsów API. Każdy token dostępu ma swoją datę ważności , który można ustawić w zasadach OAuthv2.

Tokeny odświeżania są opcjonalnie wydawane wraz z tokenami dostępu z niektórymi typami uprawnień. Odśwież tokeny służą do uzyskiwania nowych, ważnych tokenów dostępu po wygaśnięciu oryginalnego tokena dostępu lub została odwołana. Czas wygaśnięcia tokenów odświeżania można też ustawić w zasadach OAuthv2.

Ten antywzór jest związany z antywzorem ustawienie długiego okresu ważności dla tokenów OAuth.

Antywzór

Ustawianie w zasadach OAuthv2 braku ważności tokena odświeżania prowadzi do gromadzenia tokenów OAuth i zwiększonego wykorzystania miejsca na dysku w węzłach Cassandra.

Poniższa przykładowa zasada OAuthV2 pokazuje brakującą konfigurację <RefreshTokenExpiresIn>:

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

W tym przykładzie:

  • Token dostępu jest ustawiony z stosunkowo krótkim czasem ważności wynoszącym 30 minut.
  • Wygaśnięcie tokena odświeżania nie zostało ustawione.
  • Token odświeżania utrzymuje się w magazynie danych (Cassandra) bez końca, przez co dane agregacja danych.
  • Wygenerowany token odświeżania bez daty ważności może być używany bez ograniczeń czasowych do generowania tokenów dostępu.
  • Jeśli ruch do tego interfejsu API wynosi 10 żądań na sekundę, może on wygenerować aż 864 tys. tokenów za dzień.

Wpływ

  • Jeśli token odświeżania zostanie utworzony bez daty ważności, będzie to miało 2 główne konsekwencje:
    • Token odświeżania może być użyty w dowolnym momencie w przyszłości, nawet przez lata, w celu uzyskania dostępu token. Może to mieć wpływ na bezpieczeństwo.
    • Wiersz w systemie Cassandra zawierający token odświeżania nigdy nie zostanie usunięty. Spowoduje to gromadzenie danych w Cassandra.
  • Jeśli nie używasz tokena odświeżania aby uzyskać nowy token dostępu, ale utworzyć nowy token odświeżania i token dostępu, starszy token odświeżania pozostanie w systemie Cassandra. W rezultacie odśwież że tokeny będą dalej akumulowane w Cassandra, co pomogło zwiększyć zbędny ruch, zwiększone wykorzystanie dysku i intensywniejsze kompresowanie, aż w końcu wywoła odczyt/zapis czas oczekiwania w Cassandra.

Sprawdzona metoda

W przypadku tokenów odświeżania i tokenów dostępu ustaw odpowiednio krótki okres ważności. Zobacz sprawdzone metody dla ustawienia daty ważności czas odświeżania i tokeny dostępu. Pamiętaj, aby określić konfigurację daty ważności dla obu uprawnień dostępu i odśwież token w zasadach. Zapoznaj się z Dokumentacja zasad OAuthV2 aby dowiedzieć się więcej o konfiguracji zasady.

Sprawdzone metody dotyczące klientów Edge dla Private Cloud

W tej sekcji opisano sprawdzone metody dotyczące klientów Edge dla Private Cloud.

Określ domyślny okres ważności tokena odświeżania

Jeśli okres ważności tokena odświeżania nie jest domyślnie określony w konfiguracji zasad, Edge tworzy token odświeżania bez daty ważności. Możesz zastąpić to działanie przez następującą procedurę:

  1. Edytuj lub utwórz plik zastąpienia konfiguracji w węźle podmiotu przetwarzającego wiadomości. $APIGEE_ROOT/customer/application/message-processor.properties Upewnij się, że ten plik jest czytelny dla użytkownika apigee.
  2. Dodaj do tego pliku ten kod:
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
    Domyślny okres ważności tokena odświeżania (jeśli w zasadzie nie zostanie określony) zostanie ustawiony na 1 godzinę. Możesz zmienić tę wartość domyślną w zależności od swoich potrzeb biznesowych.
  3. Ponownie uruchom usługę procesora wiadomości:
    apigee-service edge-message-processor restart
  4. Powtórz powyższe kroki po kolei we wszystkich węzłach procesora wiadomości.
. .

Sprawdzone metody w Cassandra

Spróbuj przejść na najnowszą wersję Apigee dostępną publicznie. Apigee kontynuuje aby wprowadzać poprawki i ulepszenia, które pozwalają jeszcze bardziej usprawnić i zoptymalizować zarządzanie tokenów w Apigee. W Apigee tokeny dostępu i odświeżania są przechowywane w Cassandra w ramach przestrzeni klawiszy „kms”. Musisz zadbać o to, aby strategia kompresowania spację jest ustawiony na LeveledCompactionStrategy. Sprawdź, czy nie występują te indeksy:
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx#f0f0f0 i
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx

Możesz też zmniejszyć gc_grace_seconds w tabeli kms.oauth_20_access_tokens z domyślnych 10 dni na niższą (np. 3 dni), aby elementy tombstone wygenerowane po usunięciu tokenów były są usuwane z magazynu danych szybciej.

Więcej informacji