Revoca e approvazione dei token

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza documentazione di Apigee Edge.

Informazioni sulla revoca del token

In alcuni casi, le app sono tenute a revocare o invalidare esplicitamente una persona di token. Un caso tipico potrebbe essere quando un utente esce da un'app con OAuth abilitato. Un token revocato non sarà più utile per l'autorizzazione. Dopo che un token è stato revocato, se un'app lo presenta a un proxy API, un criterio OAuthV2 con un'operazione VerifyAccessToken lo rifiuterà.

Lo standard per la revoca del token è definito da IETF RFC 7009, la revoca del token OAuth 2.0 la specifica del prodotto.

In alternativa alla revoca di token specifici, puoi revocare ID client o intere app sviluppatore. Consulta la sezione Revoca e approvare le chiavi dell'app sviluppatore. Rispetto alla revoca di un singolo token, la revoca di un ID client o di un'app sviluppatore ha un impatto più ampio. Quando ritiri un ID client o un'app per sviluppatori, Apigee rifiuta tutti i token associati a quell'ID client o quell'app per sviluppatori e non emette più nuovi token per quell'ID client o quell'app per sviluppatori.

Dopo aver revocato un token, un token di accesso o un token di aggiornamento, puoi eventualmente approvarlo di nuovo in qualsiasi momento prima della scadenza. Dopo aver riapprovato il token, Il criterio OAuthV2 di Apigee accetterà di nuovo il token per l'autorizzazione, finché il token scade. La scadenza del token è indipendente dallo stato approvato o revocato del token. Il criterio Apigee OAuthV2 con un'operazione ValidateAccessToken accetterà un token di accesso solo se il token è approvato (o non revocato) e non è scaduto. Allo stesso modo, il criterio OAuthV2 di Apigee con un'operazione di RefreshAccessToken accetterà il token di aggiornamento solo se è approvato (o non revocato) e non è scaduto.

Esistono due criteri che puoi utilizzare per revocare i token:

Il criterio OAuthV2 è in grado di revocare e reintegrare un singolo token alla volta. Il criterio RevocaOAuthV2 è più flessibile in quanto può revocare più token una volta sola, per ID app o ID utente finale. Il resto della pagina descrive l'utilizzo del criterio OAuthV2 per revocare un token o reintegrare un token revocato in precedenza.

Revoca dei token di accesso e di aggiornamento

Di seguito è riportato un esempio di configurazione per il criterio OAuthV2 che utilizza l'operazione InvalidateToken. In questo caso, poiché l'attributo cascade nella L'elemento Token è true, Apigee revoca sia il token di accesso che i relativi token di aggiornamento associato.

  <OAuthV2 name="InvalidateToken">
    <Operation>InvalidateToken</Operation>
    <Tokens>
      <Token type="accesstoken" cascade="true">request.queryparam.token</Token>
    </Tokens>
  </OAuthV2>
  

Per ulteriori informazioni sul funzionamento dell'indicatore di cascata, consulta la sezione seguente sugli attributi per l'elemento Token.

Elemento <Tokens>/<Token>

Identifica la variabile di flusso che specifica il token da revocare. Ad esempio, se gli sviluppatori devono inviare una richiesta di revoca utilizzando un parametro di query denominato access_token, la variabile di flusso corretta sarà request.queryparam.access_token. Per richiedere il token in un'intestazione HTTP, ad esempio, imposta questo valore su request.header.access_token.

Non è possibile revocare un token di accesso in formato JWT. Inoltre, non è possibile utilizzare il criterio OAuthV2 per revocare un token di aggiornamento associato a un token di accesso in formato JWT. Se la variabile di contesto specificata qui fa riferimento a un token di accesso JWT o un token di aggiornamento associato a un token di accesso JWT. Puoi revocare i token di aggiornamento associati ai token di accesso JWT utilizzando il criterio RevocaOAuthV2.

Attributi

  • type (obbligatorio, stringa): il tipo di token identificato dalla variabile specificata. Valori supportati sono accesstoken e refreshtoken:
    • Per revocare un token di accesso, specifica il tipo accesstoken.
    • Per revocare sia i token di accesso che quelli di aggiornamento, specifica il tipo refreshtoken. Quando vede type refreshtoken, Apigee presume che il token sia un token di aggiornamento. Se il token di aggiornamento è rilevato, la query viene revocata. Se il token di aggiornamento non viene trovato, Apigee controlla se si tratta di un token di accesso. Se il token di accesso esiste, viene revocato.

      Nota: se passi un token già invalidato a un criterio InvalidateToken, il criterio non restituisce un errore, anche se potresti aspettartelo. Un tale non ha alcun effetto.
  • cascade (facoltativo, booleano, default: true) L'utilizzo principale di questa è revocare un token di aggiornamento senza revocare il token di accesso associato. Prendi in considerazione questi casi:
    • Revoca solo un token di aggiornamento e non il token di accesso associato. Per farlo, imposta il tipo <Token> su refreshtoken e la proprietà cascade su false.
    • Revoca sia il token di accesso sia il token di aggiornamento. Per farlo, imposta il tipo <Token> su accesstoken. Il valore di cascade può essere true (il valore predefinito) o false. Se lo imposti su true, vengono revocati sia il token di accesso sia il token di aggiornamento. Se la imposti su false, l'accesso è stato revocato e il token di aggiornamento è inutilizzabile. Per ulteriori spiegazioni, consulta la nota di seguito.
    • Revocare un token di accesso e non revocare il token di aggiornamento associato. Non supportato. Per ulteriori spiegazioni, consulta la nota di seguito.

Nota: per motivi di sicurezza, se revochi un token di accesso, verrà revocato anche il token di aggiornamento associato. Pertanto, non puoi utilizzare l'attributo cascade per revocare solo un token di accesso. Ad esempio, se imposti <Token> digita su accesstoken e imposta cascade=false, il token di accesso viene revocato (come previsto); Tuttavia, il token di aggiornamento associato è inutilizzabile. Non può essere utilizzato per aggiornare il token di accesso revocato. Il caso d'uso principale dell'attributo cascade è quando vuoi solo revocare un token di aggiornamento. In questo caso, imposta il tipo <Token> su refreshtoken e imposta cascade=false. Il token di aggiornamento verrà revocato, ma l'accesso associato rimarrà valido (fino alla scadenza o alla revoca). Per ulteriori informazioni, leggi questo Discussione nel forum della community.

Approvazione dei token di accesso e di aggiornamento in corso...

Utilizzare l'operazione ConvalidaToken per "riapprovare" un token revocato. In altre parole, quando applichi questa operazione, lo stato del token di accesso o di aggiornamento scelto come target viene modificato da "revocato" a "approvato". Puoi convalidare qualsiasi token revocato che non sia già scaduto.

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

&lt;Tokens&gt;/&lt;Token&gt; elemento

Identifica la variabile di flusso che specifica il token da convalidare. Se gli sviluppatori dovrebbe inviare una richiesta di convalida utilizzando un parametro di query denominata access_token, ad esempio, la variabile di flusso corretta potrebbe essere: request.queryparam.access_token. Per richiedere il token in un'intestazione HTTP, ad esempio, imposta questo valore su request.header.access_token.

Attributi

  • type (obbligatorio, stringa) Il tipo di token identificato dalla variabile specificata. I valori supportati sono accesstoken e refreshtoken.
  • cascade (facoltativo, booleano): per impostazione predefinita, questa opzione è impostata su true e causa la propagazione della convalida ai token associati. Pertanto, se applicato a un token di aggiornamento, viene convalidato anche il token di accesso associato. Se applicata a un accesso viene convalidato anche il relativo token di aggiornamento. Se imposti questo valore su false, verrà convalidato solo il token di accesso o di aggiornamento specificato.