Revocare il criterio OAuth v2

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

icona delle norme

Panoramica

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

Utilizza la policy 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> alla policy OAuthv2:

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

In questo esempio, passa l'ID utente finale alla policy 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. Puoi quindi revocare i token in base all'ID app.

Revoca per ID utente finale dell'app

Revoca i token di accesso OAuth2 associati all'ID di un utente finale dell'app specifico. Si tratta del token associato all'ID dell'utente a cui sono stati emessi i token.

Per impostazione predefinita, non esiste un campo per l'ID utente finale nel token di accesso OAuth. Per abilitare la revoca dei token di accesso OAuth 2.0 per ID utente finale, devi configurare la policy OAuthv2 in modo che includa l'ID utente nel token, come mostrato sopra.

Per ottenere l'ID utente finale di un'app, utilizza l' API App sviluppatore.

Esempi

I seguenti esempi utilizzano la policy Revoca OAuth V2 per revocare i token di accesso OAuth2.

ID app sviluppatore

Per revocare i token di accesso per ID app sviluppatore, utilizza l'elemento <AppId> in la policy.

Il seguente esempio 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, la policy 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> nella policy. <RevokeBeforeTimestamp> specifica un tempo Unix in millisecondi. Tutti i token emessi prima di questo orario vengono revocati.

Il seguente esempio 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> accetta un numero intero a 64 bit (long) 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 della policy RevokeOAuthV2.

<?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 <RevokeOAuthV2>

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

La tabella seguente descrive gli attributi comuni a tutti gli elementi principali della policy:

Attributo Descrizione Predefinito Presenza
name

Il nome interno della policy. 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<DisplayName> elemento per etichettare la policy nell editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

N/D Obbligatorio
continueOnError

Imposta su false per restituire un errore quando una policy non riesce. Questo è il comportamento previsto per la maggior parte delle policy.

Imposta su true per continuare l'esecuzione del flusso anche dopo l'errore di una policy.

false Facoltativo
enabled

Imposta su true per applicare la policy.

Imposta su false per disattivare la policy. La policy non verrà applicata anche se rimane collegata a un flusso.

true Facoltativo
async

Questo attributo è deprecato.

false Deprecato

Elemento <DisplayName>

Utilizza questo elemento in aggiunta all'attributo name per etichettare la policy nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

<DisplayName>Policy Display Name</DisplayName>
Predefinito

N/D

Se ometti questo elemento, viene utilizzato il valore dell'attributo name della policy.

Presenza Facoltativo
Tipo Stringa

Elemento <AppId>

Specifica l'ID app sviluppatore dei token da revocare. Passa una variabile che contiene 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 valore x-www-form-urlencoded 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 se <AppId> o <EndUserId> corrispondono. Se false, viene revocato solo il token di accesso e il token di aggiornamento rimane invariato. Lo stesso comportamento si applica solo ai token di accesso opachi.

<Cascade>false<Cascade>
Predefinito

false

Presenza

Facoltativo

Tipo Booleano
Valori validi true o false

Elemento <EndUserId>

Specifica l'ID utente finale dell'app del token da revocare. Passa una variabile che contiene 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 valore x-www-form-urlencoded specificato nel corpo della richiesta )

Presenza

Facoltativo

Tipo Stringa
Valori validi

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

Elemento <RevokeBeforeTimestamp>

Revoca i token emessi prima del timestamp. Questo elemento funziona con <AppId> e <EndUserId> per consentirti di revocare i token prima di un'ora specifica. Il valore predefinito è l'ora di esecuzione della policy.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

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

Il timestamp di esecuzione della policy.

Presenza

Facoltativo

Tipo Numero intero a 64 bit (long) 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 futuro e non può essere precedente al 1° gennaio 2014.

Variabili di flusso

La policy RevokeOAuthV2 non imposta le variabili di flusso.

Messaggi di errore

Questa sezione descrive i codici di errore e i messaggi di errore restituiti e le variabili di errore impostate da Edge quando questa policy attiva un errore. Queste informazioni sono importanti se stai sviluppando regole di errore per gestire gli errori. Per saperne di più, consulta Informazioni sugli errori delle policy e Gestione degli errori.

Errori di runtime

Questi errori possono verificarsi durante l'esecuzione della policy. I nomi degli errori mostrati di seguito sono le stringhe assegnate alla variabile fault.name quando si verifica un errore. Per maggiori dettagli, consulta la sezione Variabili di errore di seguito.

Codice di errore Stato HTTP Causa
steps.oauth.v2.InvalidFutureTimestamp 500 Il timestamp non può essere futuro.
steps.oauth.v2.InvalidEarlyTimestamp 500 Il timestamp non può essere precedente al 1° gennaio 2014.
steps.oauth.v2.InvalidTimestamp 500 Il timestamp non è valido.
steps.oauth.v2.EmptyAppAndEndUserId 500 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 questa policy attiva un errore in fase di runtime.

Variabili Dove Esempio
fault.name="fault_name" fault_name è il nome dell'errore, come elencato nella tabella Errori di runtime sopra. 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 della policy che ha generato l'errore. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name è il nome specificato dall'utente della policy 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 della policy 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