Zatwierdzanie i cofanie tokenów dostępu

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Anulowanie dostępu i odświeżanie tokenów

W niektórych przypadkach aplikacje muszą wyraźnie unieważniać lub unieważniać tokeny, na przykład gdy użytkownik wyloguje się z aplikacji obsługującej OAuth. Jeśli unieważnisz token, będzie można go ponownie zatwierdzić w dowolnym momencie, zanim straci ważność.

Procedura unieważniania tokena jest zdefiniowana 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. Publikując identyfikator URI tego punktu końcowego, umożliwiasz deweloperom aplikacji unieważnianie tokenów wystawionych przez Edge.

Oto przykładowa konfiguracja zasady OAuthV2 i operacji InvalidateToken. W takim przypadku unieważniony zostanie zarówno token dostępu, jak i powiązany z nim token odświeżania. Technicznie rzecz biorąc, obie te wartości zostają unieważnione, ponieważ flaga kaskady ma wartość Prawda. Więcej informacji o działaniu flagi kaskadowej znajdziesz poniżej, w sekcji atrybutów elementu Token.

<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 określającą token do unieważnienia. Jeśli deweloperzy mają przesyłać żądanie unieważnienia, korzystając na przykład z parametru zapytania o nazwie access_token, prawidłową zmienną przepływu będzie wyglądać tak: request.queryparam.access_token. Aby na przykład wymagać tokena w nagłówku HTTP, ustaw tę wartość na request.header.access_token.

Atrybuty

  • type (wymagany, ciąg znaków): typ tokena zidentyfikowany przez podaną zmienną. Obsługiwane wartości to accesstoken i refreshtoken:.
    • Aby unieważnić token dostępu, podaj typ accesstoken.
    • Aby unieważnić zarówno tokeny dostępu, jak i tokeny odświeżania, podaj typ tokenu odświeżania. Gdy Edge zobaczy typ odświeżania, Edge przyjmuje, że token jest tokenem odświeżania. Jeśli go znajdzie, zostanie unieważniony. Jeśli go nie znajdzie, Edge sprawdzi, czy jest to token dostępu. Jeśli token dostępu istnieje, zostaje unieważniony.

      Uwaga: jeśli przekażesz do zasady InvalidateToken unieważniony token, zasada nie zwróci błędu, chociaż można się tego spodziewać. Ta operacja nie daje żadnego efektu.
  • cascade (opcjonalne, wartość logiczna, domyślny: true) Podstawowym celem tego atrybutu jest unieważnienie tokena odświeżania bez unieważniania powiązanego z nim tokena dostępu. Weź pod uwagę te sytuacje:
    • 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 kaskadę na false.
    • Unieważnij token dostępu i token odświeżania. Aby to zrobić, ustaw typ <Token> na accesstoken. Kaskadą może być true (domyślna) lub false. Jeśli ustawisz wartość true, token dostępu i token odświeżania zostaną unieważnione. Jeśli ustawisz wartość false, token dostępu zostanie unieważniony, a token odświeżania będzie bezużyteczny. Więcej informacji znajdziesz w sekcji Uwagi poniżej.
    • Unieważnij token dostępu i nie unieważniaj powiązanego z nim tokena odświeżania. Nieobsługiwane. Więcej informacji można znaleźć w punkcie Uwagi 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 kaskady do unieważnienia tylko tokena 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 token odświeżania będzie bezużyteczny. Nie można go użyć do odświeżenia unieważnionego tokena dostępu. Główny przypadek użycia atrybutu kaskadowego polega na tym, że chcesz unieważnić tylko token odświeżania. W takim przypadku ustaw typ <Token> na refreshtoken i ustaw cascade=false. Token odświeżania zostanie unieważniony, ale powiązany z nim token dostępu pozostanie ważny (do czasu jego wygaśnięcia lub unieważnienia). Więcej informacji znajdziesz w tej dyskusji na forum społeczności.

Zatwierdzam dostęp i odświeżaj tokeny

Użyj operacji ValidateToken, aby „ponownie zatwierdzić” unieważniony token. Oznacza to, że gdy zastosujesz tę operację, stan docelowego dostępu lub tokena odświeżania zmienia się z „unieważniony” na „zatwierdzony”. Możesz zweryfikować każdy unieważniony token, który nie wygasł.

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

Element <Tokens>/<Token>

Identyfikuje zmienną przepływu określającą token do weryfikacji. Jeśli deweloperzy mają przesyłać żądanie weryfikacji, używając na przykład parametru zapytania o nazwie access_token, prawidłowa zmienna przepływu będzie wyglądać tak: request.queryparam.access_token. Aby na przykład wymagać tokena w nagłówku HTTP, ustaw tę wartość na request.header.access_token.

Atrybuty

  • type (wymagany, ciąg znaków) Typ tokena identyfikowany przez podaną zmienną. Obsługiwane wartości to accesstoken i refreshtoken.
  • cascade (opcjonalne, wartość logiczna): domyślnie ta opcja jest ustawiona na true i powoduje rozpowszechnienie weryfikacji w powiązanych tokenach. Jeśli więc zostanie zastosowany do tokena odświeżania, powiązany z nim token dostępu również zostanie zweryfikowany. Jeśli zostanie zastosowany do tokena dostępu, powiązany z nim token odświeżania również zostanie zweryfikowany. Jeśli ustawisz wartość false, weryfikowany będzie tylko określony token dostępu lub odświeżenia.