Revoca criterio OAuth V2

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

icona delle norme

Panoramica

Revoca i token di accesso OAuth2 associati a un ID app sviluppatore, a un ID utente finale dell'app o a entrambi.

Questo criterio è un criterio estendibile e il suo utilizzo potrebbe avere implicazioni in termini di costi o utilizzo, a seconda della licenza Apigee. Per informazioni sui tipi di criteri e sulle implicazioni di utilizzo, consulta Tipi di criteri.

Utilizza il criterio OAuthv2 per generare un token di accesso OAuth 2.0. Un token generato da Apigee ha il seguente formato:

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599", //--in seconds
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "token_type" : "BearerToken",
  "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
  "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
  "organization_name" : "myorg",
  "refresh_token_expires_in" : "0", //--in seconds
  "refresh_count" : "0"
}

L'elemento application_name contiene l'ID app sviluppatore associato al token.

Per impostazione predefinita, Apigee non include l'ID utente finale nel token. Puoi configurare Apigee in modo che includa l'ID utente finale aggiungendo l'elemento <AppEndUser> al criterio OAuthv2:

<OAuthV2 name="GenerateAccessTokenClient">
    <Operation>GenerateAccessToken</Operation>
    ...
    <AppEndUser>request.queryparam.app_enduser</AppEndUser>
</OAuthV2>

In questo esempio, passa l'ID utente finale al criterio OAuthv2 in un parametro di query denominato app_enduser. L'ID utente finale viene quindi incluso nel token nell'elemento app_enduser:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "app_enduser" : "6ZG094fgnjNf02EK",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Revoca per ID app sviluppatore

Revoca i token di accesso OAuth2 associati a un ID app sviluppatore. Tutti i token di accesso OAuth2 generati da Apigee includono l'ID dell'app sviluppatore associata al token. Potrai quindi revocare i token in base a quell'ID app.

Per ottenere un elenco di ID app di uno sviluppatore specifico, utilizza:

Revoca per ID utente finale dell'app

Revoca i token di accesso OAuth2 associati all'ID di un utente finale di un'app specifica. Si tratta del token associato all'ID dell'utente per il quale sono stati emessi.

Per impostazione predefinita, il token di accesso OAuth non contiene un campo per l'ID utente finale. Per attivare la revoca dei token di accesso OAuth 2.0 in base all'ID utente finale, devi configurare il criterio OAuthv2 in modo da includere l'ID utente nel token, come mostrato sopra.

Per ottenere l'ID utente finale di un'app, utilizza il Metodo: organizations.developers.get.

Esempi

I seguenti esempi utilizzano il criterio Revoca OAuth V2 per revocare i token di accesso OAuth2.

ID app sviluppatore

Per revocare i token di accesso in base all'ID app dello sviluppatore, utilizza l'elemento <AppId> nel criterio.

L'esempio seguente prevede di trovare l'ID app sviluppatore del token di accesso in un parametro di query denominato app_id:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
</RevokeOAuthV2>

Dato l'ID dell'app dello sviluppatore, il criterio revoca il token di accesso.

Revoca prima del timestamp

Per revocare i token di accesso in base all'ID app dello sviluppatore generati prima di una data e un'ora specifiche, utilizza l'elemento <RevokeBeforeTimestamp> nel criterio. <RevokeBeforeTimestamp> specifica un tempo del periodo UTC in millisecondi. Tutti i token emessi prima di questa data vengono revocati.

L'esempio seguente revoca i token di accesso per un'app dello sviluppatore creata prima del 1° luglio 2019:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
  <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp>
</RevokeOAuthV2>

L'elemento <RevokeBeforeTimestamp> richiede un numero intero di 64 bit (lungo) che rappresenta il numero di millisecondi trascorsi dalla mezzanotte del 1° gennaio 1970 UTC.


Riferimento elemento

Il riferimento elemento descrive gli elementi e gli attributi del criterio RevocaOAuthV2.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1">
  <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
  <AppId ref="variable"></AppId>
  <EndUserId ref="variable"></EndUserId>
  <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp>
  <Cascade>false</Cascade>
</RevokeOAuthV2>

Attributi <RevocaOAuthV2>

<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">

La tabella seguente descrive gli attributi comuni a tutti gli elementi principali dei criteri:

Attributo Descrizione Predefinito Presenza
name

Il nome interno della norma. Il valore dell'attributo name può contenere lettere, numeri, spazi, trattini, trattini bassi e punti. Questo valore non può superare i 255 caratteri.

Facoltativamente, utilizza l'elemento <DisplayName> per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

N/A Obbligatorio
continueOnError

Impostalo su false per restituire un errore in caso di errore di un criterio. Questo è il comportamento previsto per la maggior parte dei criteri.

Imposta su true per fare in modo che l'esecuzione del flusso continui anche in caso di errore di un criterio.

false Facoltativo
enabled

Imposta il criterio su true per applicare il criterio.

Impostala su false per disattivare il criterio. Il criterio non verrà applicato anche se rimane associato a un flusso.

true Facoltativo

Elemento <DisplayName>

Utilizzalo in aggiunta all'attributo name per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

<DisplayName>Policy Display Name</DisplayName>
Predefinito

N/A

Se ometti questo elemento, viene utilizzato il valore dell'attributo name del criterio.

Presenza Facoltativo
Tipo Stringa

Elemento <AppId>

Specifica l'ID app sviluppatore dei token da revocare. Trasmetti una variabile contenente l'ID app o un ID app letterale.

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
Predefinito

request.formparam.app_id (un URL x-www-form-codificato e specificato nel corpo della richiesta)

Presenza

Facoltativo

Tipo Stringa
Valori validi

Una variabile di flusso contenente una stringa ID app o una stringa letterale.

Elemento <Cascade>

Se true e hai un token di accesso opaco tradizionale, sia il token di aggiornamento sia il token di accesso verranno revocati in caso di corrispondenza di <AppId> o <EndUserId>. Se hai un token di accesso JWT, viene revocato solo il token di aggiornamento emesso con il token di accesso. In base alla sua progettazione, i token di accesso JWT non possono essere revocati. Se false, solo il token di accesso viene revocato e il token di aggiornamento rimane invariato. Lo stesso comportamento si applica solo ai token di accesso opachi. I token di accesso JWT non possono essere revocati.

<Cascade>false<Cascade>
Predefinito

false

Presenza

Facoltativo

Tipo Valore booleano
Valori validi true o false

Elemento <EndUserId>

Specifica l'ID utente finale dell'app del token da revocare. Trasmetti una variabile contenente l'ID utente o una stringa token letterale.

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
Predefinito

request.formparam.enduser_id (un URL x-www-form-codificato e specificato nel corpo della richiesta)

Presenza

Facoltativo

Tipo Stringa
Valori validi

Una variabile di flusso contenente una stringa User-ID o una stringa letterale.

Elemento <RevocaBeforeTimestamp>

Revoca i token emessi prima del timestamp. Questo elemento interagisce con <AppId> e <EndUserId> per consentirti di revocare i token prima di un'ora specifica. Il valore predefinito corrisponde all'ora di esecuzione del criterio.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

<RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
Predefinito

Il timestamp in cui il criterio viene eseguito.

Presenza

Facoltativo

Tipo Numero intero a 64 bit (lungo) che rappresenta il numero di millisecondi trascorsi dalla mezzanotte del 1° gennaio 1970 UTC.
Valori validi

Una variabile di flusso contenente un timestamp o un timestamp letterale. Il timestamp non può essere nel futuro e non può essere precedente al 1° gennaio 2014.

Variabili di flusso

Il criterio RevocaOAuthV2 non imposta le variabili di flusso.

Messaggi di errore

Questa sezione descrive i codici e i messaggi di errore che vengono restituiti e le variabili di errore impostate da Apigee quando questo criterio attiva un errore. Queste informazioni sono importanti per sapere se si stanno sviluppando regole di errore per gestire gli errori. Per scoprire di più, consulta gli articoli Cosa devi sapere sugli errori relativi alle norme e Gestione degli errori.

Errori di runtime

Questi errori possono verificarsi quando il criterio viene eseguito. I nomi di errore mostrati di seguito sono le stringhe assegnate alla variabile fault.name quando si verifica un errore. Consulta la sezione Variabili di errore riportata di seguito per ulteriori dettagli.

Codice di errore Stato HTTP Causa
steps.oauth.v2.InvalidFutureTimestamp 500 Il timestamp non può essere nel futuro.
steps.oauth.v2.InvalidEarlyTimestamp 500 Il timestamp non può essere antecedente al 1° gennaio 2014.
steps.oauth.v2.InvalidTimestamp 500 Il timestamp non è valido.
steps.oauth.v2.EmptyAppAndEndUserId 500 I campi AppdId e EndUserId non possono essere vuoti.

Errori di deployment

Per informazioni sugli errori di deployment, consulta il messaggio riportato nell'interfaccia utente.

Variabili di errore

Queste variabili vengono impostate quando questo criterio attiva un errore in fase di runtime.

Variabili Dove Esempio
fault.name="fault_name" fault_name è il nome dell'errore, come indicato nella tabella Errori di runtime riportata sopra. Il nome del guasto è l'ultima parte del codice di errore. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name è il nome specificato dall'utente del criterio che ha generato l'errore. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name è il nome specificato dall'utente del criterio che ha generato l'errore. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name è il nome specificato dall'utente del criterio che ha generato l'errore. oauthV2.GetTokenInfo.cause = ClientID is Invalid

Esempio di risposta di errore

{
   "fault":{
      "faultstring":"Timestamp is in the future.",
      "detail":{
         "errorcode":"steps.oauth.v2.InvalidFutureTimestamp"
      }
   }
}

Esempio di regola di errore

<FaultRule name="RevokeOAuthV2 Faults">
    <Step>
        <Name>AM-InvalidTimestamp</Name>
    </Step>
    <Condition>(fault.name = "InvalidFutureTimestamp")</Condition>
</FaultRule>

Argomenti correlati