Zatwierdzanie i cofanie tokenów dostępu

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

Unieważnianie tokenów dostępu i odświeżania

W niektórych przypadkach aplikacje muszą wyraźnie unieważnić tokeny, np. gdy użytkownik wyloguje się z aplikacji obsługującej OAuth. Jeśli unieważnisz token, można go ponownie zatwierdzić w dowolnym momencie przed jego wygaśnięciem.

Procedura unieważniania tokena jest określona w specyfikacji unieważniania tokena OAuth 2.0.

Apigee Edge udostępnia operację InvalidateToken, która umożliwia skonfigurowanie dedykowanego punktu końcowego unieważniania tokena. Opublikowanie adresu URI tego punktu końcowego umożliwia deweloperom aplikacji unieważnianie tokenów wydanych przez Edge.

Oto przykładowa konfiguracja zasady OAuthV2 i operacji InvalidateToken. W tym przypadku unieważniany jest zarówno token dostępu, jak i powiązany z nim token odświeżania. Technicznie oba tokeny są unieważniane, ponieważ flaga cascade jest ustawiona na true. Więcej informacji o działaniu flagi cascade znajdziesz w sekcji Atrybuty elementu Token poniżej.

<OAuthV2 name="InvalidateToken">
  <Operation>InvalidateToken</Operation>
  <Tokens>
    <Token type="accesstoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

Element <Tokens>/<Token>

Określa zmienną przepływu, która wskazuje token do unieważnienia. Jeśli deweloperzy mają przesyłać prośbę o unieważnienie za pomocą parametru zapytania o nazwie access_token, prawidłowa zmienna przepływu będzie wyglądać tak: request.queryparam.access_token. Aby wymagać tokena w nagłówku HTTP, na przykład, ustaw tę wartość na request.header.access_token.

Atrybuty

  • type (wymagany, ciąg znaków): typ tokena określony przez podaną zmienną określony. Obsługiwane wartości są accesstoken i refreshtoken:
    • Aby unieważnić token dostępu, określ typ accesstoken.
    • Aby unieważnić zarówno token dostępu, jak i token odświeżania, określ typ refreshtoken. Gdy Edge zobaczy typ refreshtoken, założy, że token jest tokenem odświeżania. Jeśli ten token odświeżania zostanie znaleziony, zostanie unieważniony. Jeśli ten token odświeżania nie zostanie znaleziony, Edge sprawdzi, czy jest to token dostępu. Jeśli token dostępu istnieje, zostanie unieważniony.

      Uwaga: jeśli przekażesz już unieważniony token do zasady InvalidateToken, zasada nie zwróci błędu, chociaż możesz się tego spodziewać. Taka operacja nie ma żadnego efektu.
  • cascade (opcjonalny, wartość logiczna, domyślnie: true) Głównym zastosowaniem tego atrybutu jest unieważnienie tokena odświeżania bez unieważniania powiązanego z nim tokena dostępu. Rozważ te przypadki:
    • Unieważnij tylko token odświeżania i nie unieważniaj powiązanego z nim tokena dostępu. Aby to zrobić, ustaw typ <Token> na refreshtoken, a cascade na false.
    • Unieważnij zarówno token dostępu, jak i token odświeżania. Aby to zrobić, ustaw typ <Token> na accesstoken. Wartość cascade może być true (domyślna) lub false. Jeśli ustawisz ją na true, unieważniony zostanie zarówno token dostępu , jak i token odświeżania. Jeśli ustawisz ją na false, token dostępu zostanie unieważniony, a token odświeżania będzie bezużyteczny. Więcej informacji znajdziesz w uwadze poniżej.
    • Unieważnij token dostępu i nie unieważniaj powiązanego z nim tokena odświeżania. Nieobsługiwane. Więcej informacji znajdziesz w uwadze poniżej.

Uwaga: ze względów bezpieczeństwa, jeśli unieważnisz token dostępu, powiązany z nim token odświeżania również zostanie unieważniony. Dlatego nie możesz użyć atrybutu cascade, aby unieważnić tylko token dostępu. Jeśli na przykład ustawisz typ <Token> na accesstoken, i ustawisz cascade=false, token dostępu zostanie unieważniony (zgodnie z oczekiwaniami), ale powiązany z nim token odświeżania będzie bezużyteczny. Nie można go użyć do odświeżenia unieważnionego tokena dostępu. Głównym przypadkiem użycia atrybutu cascade jest sytuacja, gdy chcesz unieważnić tylko token odświeżania. W takim przypadku ustaw typ <Token> na refreshtoken, a ustaw cascade=false. Token odświeżania zostanie unieważniony, ale powiązany z nim token dostępu pozostanie ważny (do momentu wygaśnięcia lub unieważnienia). Więcej informacji znajdziesz w tej dyskusji na forum społeczności.

Zatwierdzanie tokenów dostępu i odświeżania

Aby „ponownie zatwierdzić” unieważniony token, użyj operacji ValidateToken. Oznacza to, że po zastosowaniu tej operacji stan docelowego tokena dostępu lub tokena odświeżania zmieni się z „unieważniony” na „zatwierdzony”. Możesz zweryfikować każdy unieważniony token, który jeszcze nie wygasł.

<OAuthV2 name="ValidateToken">
  <Operation>ValidateToken</Operation>
  <Tokens>
    <Token type="refreshtoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

Element <Tokens>/<Token>

Określa zmienną przepływu, która wskazuje token do zweryfikowania. Jeśli deweloperzy mają przesyłać prośbę o weryfikację za pomocą parametru zapytania o nazwie access_token, prawidłowa zmienna przepływu będzie wyglądać tak: request.queryparam.access_token. Aby wymagać tokena w nagłówku HTTP, na przykład, ustaw tę wartość na request.header.access_token.

Atrybuty

  • type (wymagany, ciąg znaków) Typ tokena określony przez podaną zmienną określony. Obsługiwane wartości są accesstoken i refreshtoken.
  • cascade (opcjonalny, wartość logiczna) Domyślnie ta opcja jest ustawiona na true, co powoduje, że weryfikacja jest propagowana do powiązanych tokenów. Jeśli więc zastosujesz ją do tokena odświeżania, powiązany z nim token dostępu również zostanie zweryfikowany. Jeśli zastosujesz ją do tokena dostępu, powiązany z nim token odświeżania również zostanie zweryfikowany. Jeśli ustawisz tę wartość na false, zweryfikowany zostanie tylko określony token dostępu lub token odświeżania.