Revoca e approvazione dei token

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Informazioni sulla revoca dei 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 abilitata per OAuth. Un token revocato non sarà più utile per l'autorizzazione. Una volta revocato un token, se un'app lo presenta a un proxy API, un criterio OAuthV2 con un'operazione di verifica dell'access token lo rifiuterà.

Lo standard per la revoca dei token è definito dal documento IETF RFC 7009, la specifica di revoca dei token OAuth 2.0.

In alternativa alla revoca di token specifici, puoi revocare ID client o intere app per sviluppatori. Per i dettagli, vedi Revoca e approvazione delle chiavi delle app per 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 revochi un ID client o un'app sviluppatore, Apigee rifiuta tutti i token associati a quell'ID client o a quell'app sviluppatore e non emette più nuovi token per quell'ID client o quell'app sviluppatore.

Dopo aver revocato un token, di accesso o di aggiornamento, puoi facoltativamente riapprovarlo in qualsiasi momento prima della scadenza. Dopo aver riapprovato il token, la norma OAuthV2 di Apigee accetterà nuovamente il token per l'autorizzazione, fino alla sua scadenza. La scadenza del token è indipendente dallo stato di approvazione o revoca del token. La policy Apigee OAuthV2 con un'operazione di convalida del token di accesso accetterà un token di accesso solo se è approvato (o non revocato) e non scaduto. Allo stesso modo, il criterio Apigee OAuthV2 con un'operazione di aggiornamento del token di accesso accetterà un token di aggiornamento solo se questo è approvato (o non revocato) e non scaduto.

Esistono due norme che puoi utilizzare per revocare i token:

Il criterio OAuthV2 è in grado di revocare e reintegrare un singolo token alla volta. La norma RevokeOAuthV2 è più flessibile in quanto può revocare più token contemporaneamente, per ID app o ID utente finale. Il resto di questa pagina descrive l'utilizzo del criterio OAuthV2 per revocare un token o per ripristinare 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 dell'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 a cascata, consulta la sezione seguente sugli attributi dell'elemento Token.

Elemento <Tokens>/<Token>

Identifica la variabile di flusso che specifica il token da revocare. Se gli sviluppatori devono inviare una richiesta di revoca utilizzando un parametro di ricerca 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 la policy OAuthV2 per revocare un token di aggiornamento associato a un token di accesso in formato JWT. Si verificherà 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 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 il token di accesso sia il token di aggiornamento, specifica il tipo refreshtoken. Quando rileva type refreshtoken, Apigee presuppone che il token sia un token di aggiornamento. Se viene trovato, il token di aggiornamento viene revocato. Se il token di aggiornamento non viene trovato, Apigee verifica se si tratta di un token di accesso. Se il token di accesso esiste, viene revocato.

      Nota: se trasmetti un token già invalidato a un criterio InvalidateToken, il criterio non restituisce un errore, anche se potresti aspettarti che lo faccia. Un'operazione di questo tipo non ha effetto.
  • cascade (facoltativo, booleano, valore 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 di un token di aggiornamento e non del token di accesso associato. Per farlo, imposta il tipo <Token> su refreshtoken e la cascata su false.
    • Revoca sia il token di accesso che 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 riportata di seguito.
    • Revocare un token di accesso e non revocare il token di aggiornamento associato. Non supportato. Per ulteriori spiegazioni, consulta la nota riportata di seguito.

Nota: per motivi di sicurezza, se revochi un token di accesso, viene 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 si verifica 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 il token di accesso associato rimarrà valido (fino alla scadenza o alla revoca). Per saperne di più, consulta questa discussione del forum della community.

Approvazione dei token di accesso e di aggiornamento

Utilizza l'operazione ValidateToken per "riapprovare" un token revocato. ovvero, quando applichi questa operazione, lo stato del token di accesso o di aggiornamento di destinazione viene modificato da "revocato" a "approvato". Puoi convalidare qualsiasi token revocato che non sia ancora 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 devono inviare una richiesta di convalida utilizzando un parametro di ricerca 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 fa sì che la convalida venga propagata 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 imposti questo valore su false, viene convalidato solo il token di accesso o di aggiornamento specificato.