Revoca e approvazione dei token

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Informazioni sulla revoca del token

In alcuni casi, le app sono tenute a revocare o invalidare esplicitamente i singoli 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 specifica per la revoca del token OAuth 2.0.

In alternativa alla revoca di token specifici, puoi revocare ID client o intere app sviluppatore. Per maggiori dettagli, consulta la sezione Ritirare e approvare le chiavi dell'app per gli sviluppatori. Rispetto alla revoca di un singolo token, la revoca di un ID client o di un'app per sviluppatori 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 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 Apigee OAuthV2 con un'operazione ValidateAccessToken accetterà un token di accesso solo se il token è approvato (o non revocato) e non è scaduto. Analogamente, il criterio Apigee OAuthV2 con un'operazione di RefreshAccessToken accetterà un token di aggiornamento solo se questo è approvato (o non revocato) e non è scaduto.

Puoi utilizzare due criteri per revocare i token:

Il criterio OAuthV2 ha la possibilità di revocare e reintegrare un singolo token alla volta. Il criterio RevokeOAuthV2 è più flessibile in quanto può revocare più token contemporaneamente in base all'ID app o all'ID utente finale. Il resto di questa pagina descrive l'utilizzo del criterio OAuthV2 per revocare un token o per reintegrare un token revocato in precedenza.

Revocare i 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 dell'elemento Token è true, Apigee revoca sia il token di accesso sia il relativo 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. Verrà visualizzato 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 la norma RevokeOAuthV2.

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 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 viene trovato, viene 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, il criterio non restituisce un errore, anche se potresti aspettartelo. Questa operazione non ha alcun effetto.
  • cascade (facoltativo, booleano, predefinito: true) L'uso 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 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 lo imposti su false, il token di accesso viene revocato e il token di aggiornamento non è utilizzabile. Per ulteriori spiegazioni, consulta la nota di seguito.
    • Revoca un token di accesso e non revoca 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 il tipo <Token> su accesstoken e imposti cascade=false, il token di accesso viene revocato (come previsto); tuttavia, il token di aggiornamento associato non è utilizzabile. Non può essere utilizzato per aggiornare il token di accesso revocato. Il caso d'uso principale dell'attributo cascade è quando vuoi revocare solo un token di aggiornamento. In questo caso, imposta il tipo <Token> su refreshtoken e imposta cascade=false. Il token di aggiornamento verrà revocato, ma il token di accesso associato rimarrà valido (fino alla scadenza o alla revoca). Per ulteriori informazioni, consulta questa discussione del forum della community.

Approvazione dei token di accesso e di aggiornamento

Utilizza l'operazione ValidateToken per "approvare di nuovo" 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>

Elemento <Tokens>/<Token>

Identifica la variabile di flusso che specifica il token da convalidare. Ad esempio, se gli sviluppatori devono inviare una richiesta di convalida 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.

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 viene applicato a un token di accesso, viene convalidato anche il token di aggiornamento associato. Se imposti questo valore su false, verrà convalidato solo il token di accesso o di aggiornamento specificato.