Revoca e approvazione dei token

Questa pagina si applica a Apigee e Apigee ibrido.

Visualizza la documentazione di Apigee Edge.

Informazioni sulla revoca del token

In alcuni casi, le app devono revocare o invalidare esplicitamente i singoli token. Un caso tipico potrebbe essere quando un utente si disconnette da un'app abilitata per OAuth. 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 di VerifyAccessToken rifiuterà il token.

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

In alternativa alla revoca di token specifici, puoi revocare gli ID client o l'intera app sviluppatore. Per maggiori dettagli, consulta Revoca e approvazione delle 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 revochi un ID client o un'app sviluppatore, Apigee rifiuta tutti i token associati all'ID client o all'app sviluppatore e non emette più nuovi token per l'ID client o l'app sviluppatore.

Dopo aver revocato un token, che si tratti di un token di accesso o di un token di aggiornamento, puoi facoltativamente riapprovarlo in qualsiasi momento prima che scada. Dopo aver riapprovato il token, il criterio OAuthV2 di Apigee lo accetterà di nuovo per l'autorizzazione, fino alla scadenza del token. La scadenza del token è indipendente dallo stato approvato o revocato del token. Il criterio OAuthV2 di Apigee con un'operazione di ConvalidaAccessToken accetterà un token di accesso solo se questo token è approvato (o non revocato) e non è scaduto. Allo stesso modo, il criterio OAuthV2 di Apigee con un'operazione di RefreshAccessToken accetterà un 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 può revocare e anche reintegrare un solo token alla volta. Il criterio RevocaOAuthV2 è più flessibile in quanto può revocare più token contemporaneamente, 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

Ecco un esempio di configurazione per il criterio OAuthV2 che utilizza l'operazione InvalidateToken. In questo caso, poiché l'attributo cascade nell'elemento Token è true, Apigee revoca sia il token di accesso sia il 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 del flag cascade, consulta la sezione di seguito sugli attributi per l'elemento Token.

Elemento <Tokens>/<Token>

Identifica la variabile di flusso che specifica il token da revocare. Se gli sviluppatori dovrebbero inviare una richiesta di revoca utilizzando un parametro di query denominato access_token, ad esempio, 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. Si verifica un errore di runtime se la variabile di contesto specificata qui fa riferimento a un token di accesso JWT o a 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. I valori supportati sono accesstoken e refreshtoken:
    • Per revocare un token di accesso, specifica il tipo di token di accesso.
    • Per revocare entrambi i token di accesso e di aggiornamento, specifica il tipo di refreshtoken. Quando rileva il tipo refreshtoken, Apigee presuppone che il token sia un token di aggiornamento. Se viene trovato, il token di aggiornamento è stato revocato. 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, non restituisce un errore, anche se ci si potrebbe aspettare. Questa operazione non ha alcun effetto.
  • cascade (facoltativo, booleano, default: true) L'utilizzo principale di questo attributo è revocare un token di aggiornamento senza revocare il token di accesso associato. Considera questi casi:
    • Revoca solo un token di aggiornamento e non revocare il token di accesso associato. Per farlo, imposta il tipo di <Token> su refreshtoken e l'impostazione Cascade su false.
    • Revoca sia il token di accesso sia il token di aggiornamento. Per farlo, imposta il tipo di <Token> su accesstoken. Il valore di cascade può essere true (valore predefinito) o false. Se lo imposti su true, sia il token di accesso sia il token di aggiornamento vengono revocati. Se lo imposti su false, il token di accesso viene revocato e il token di aggiornamento è inutilizzabile. Consulta la nota di seguito per ulteriori spiegazioni.
    • Revoca un token di accesso e non revocare il token di aggiornamento associato. Non supportato. Per ulteriori informazioni, consulta la nota riportata di seguito.

Nota: per motivi di sicurezza, se revochi un token di accesso, verrà revocato anche il token di aggiornamento associato. Di conseguenza, non puoi utilizzare l'attributo cascade per revocare solo un token di accesso. Ad esempio, se imposti il tipo <Token> su accesstoken e imposti 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 per l'attributo cascade è quando vuoi revocare solo un token di aggiornamento. In questo caso, imposta il tipo di <Token> su refreshtoken e imposta cascade=false. Il token di aggiornamento verrà revocato, ma il token di accesso associato rimarrà valido (finché non scade o viene revocato). Per ulteriori informazioni, consulta questa discussione del forum della community.

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

Utilizza 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 passa da "revocato" ad "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>

Elemento <Tokens>/<Token>

Identifica la variabile di flusso che specifica il token da convalidare. Se gli sviluppatori dovrebbero inviare una richiesta di convalida utilizzando un parametro di query denominato access_token, ad esempio, 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.

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 determina la propagazione della convalida ai token associati. Pertanto, se applicato a un token di aggiornamento, viene convalidato anche il token di accesso associato. Se applicato a un token di accesso, viene convalidato anche il token di aggiornamento associato. Se lo imposti su false, viene convalidato solo il token di accesso o di aggiornamento specificato.