Revoca criterio OAuth V2

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

icona norme

Panoramica

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

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 per includere l'ID utente finale aggiungendo l'elemento <AppEndUser> al criterio OAuthv2:

<OAuthV2 name="GenerateAccessTokenClient">
    <Operation>GenerateAccessTokenV/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 con il token. Puoi quindi revocare i token in base a questo ID app.

Revoca per ID utente finale dell'app

Revoca i token di accesso OAuth2 associati all'ID utente finale di un'app specifica. Questo è il token associati all'ID dell'utente a cui sono stati emessi i token.

Per impostazione predefinita, il token di accesso OAuth non contiene un campo per l'ID utente finale. Per consentire la revoca di Token di accesso OAuth 2.0 per ID utente finale, devi configurare il criterio OAuthv2 per includere l'ID utente nel token, come mostrato sopra.

Per ottenere l'ID utente finale dell'app, utilizza il API Developer Apps.

Esempi

Gli esempi riportati di seguito 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 sviluppatore, utilizza l'elemento <AppId> in le tue norme.

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 sviluppatore, il criterio revoca il token di accesso.

Revoca prima del timestamp

Per revocare i token di accesso per ID app sviluppatore generati prima di una data e un'ora specifiche: utilizza l'elemento <RevokeBeforeTimestamp> nel criterio. <RevokeBeforeTimestamp> specifica un'epoca UTC in millisecondi. Tutti i token emessi prima di questa data/ora vengono revocati.

L'esempio seguente revoca i token di accesso per un'app 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> utilizza un numero intero a 64 bit (lungo) che rappresenta il numero di millisecondi trascorsi dalla mezzanotte del 1° gennaio 1970 UTC.


Riferimento elemento

Il riferimento all'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>

<RevocaOAuthV2> attributi

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

La tabella seguente descrive gli attributi comuni a tutti gli elementi principali del criterio:

Attributo Descrizione Predefinito Presenza
name

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

Se vuoi, puoi utilizzare l'elemento <DisplayName> per etichettare il criterio in l'editor proxy della UI di gestione con un nome diverso in linguaggio naturale.

N/D Obbligatorio
continueOnError

Imposta il valore su false per restituire un errore quando un criterio non viene eseguito. Si tratta di un comportamento previsto per la maggior parte dei criteri.

Imposta su true per fare in modo che l'esecuzione del flusso continui anche dopo un criterio non riesce.

falso Facoltativo
enabled

Imposta il valore su true per applicare il criterio.

Imposta false per disattivare il criterio. Il criterio non verrà applicata anche se rimane collegata a un flusso.

true Facoltativo
async

Questo attributo è obsoleto.

falso Deprecato

&lt;DisplayName&gt; elemento

Da utilizzare in aggiunta all'attributo name per etichettare il criterio in editor proxy della UI di gestione con un nome diverso e in linguaggio naturale.

<DisplayName>Policy Display Name</DisplayName>
Predefinito

N/D

Se ometti questo elemento, il valore dell'attributo name del criterio è in uso.

Presenza Facoltativo
Tipo Stringa

&lt;AppId&gt; elemento

Specifica l'ID app sviluppatore dei token da revocare. Passa una variabile che contiene ID app o un ID app letterale.

<AppId>appIdString</AppId>

or:

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

request.formparam.app_id (un x-www-form-urlcodificato e specificato nella richiesta corpo)

Presenza

Facoltativo

Tipo Stringa
Valori validi

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

<A cascata> elemento

Se true e disponi di un token di accesso tradizionale opaco, vengono utilizzati entrambi il token di aggiornamento e il token di accesso verranno revocati se <AppId> o <EndUserId> corrispondenza. Se false, viene revocato solo il token di accesso e il token di aggiornamento rimane invariato. Si applica lo stesso comportamento solo per token di accesso opaci.

<Cascade>false<Cascade>
Predefinito

falso

Presenza

Facoltativo

Tipo Booleano
Valori validi true oppure false

&lt;EndUserId&gt; elemento

Specifica l'ID utente finale dell'app del token da revocare. Passa una variabile che contiene un ID utente o una stringa token letterale.

<EndUserId>userIdString</EndUserId>

or:

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

request.formparam.enduser_id (un x-www-form-urlcodificato e specificato nella richiesta corpo)

Presenza

Facoltativo

Tipo Stringa
Valori validi

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

&lt;RevokeBeforeTimestamp&gt; elemento

Revoca i token emessi prima del timestamp. Questo elemento è compatibile con <AppId> e <EndUserId> per consentirti di revocare i token prima di un orario specifico. Il valore predefinito corrisponde all'ora in cui viene eseguito il criterio.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

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

Il timestamp dell'esecuzione del criterio.

Presenza

Facoltativo

Tipo Numero intero a 64 bit (lungo) che rappresenta il numero di millisecondi trascorsi dalla mezzanotte; il 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 restituiti, nonché le variabili di errore impostate da Edge quando questo criterio attiva un errore. È importante sapere se stai sviluppando regole di errore per per gestire gli errori. Per saperne di più, consulta Cosa devi sapere sugli errori relativi ai criteri e sulla gestione di errore.

Errori di runtime

Questi errori possono verificarsi quando il criterio viene eseguito. I nomi degli errori mostrati di seguito sono le stringhe assegnate alla variabile fault.name quando si verifica un errore. Vedi il problema di seguito per maggiori 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, fai riferimento al messaggio riportato nell'interfaccia utente.

Variabili di errore

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

Variabili Dove Esempio
fault.name="fault_name" fault_name è il nome dell'errore, come elencato nella precedente tabella Errori di runtime. Il nome dell'errore è 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