Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.
Panoramica
Revoca i token di accesso OAuth2 associati a un ID app sviluppatore o a un ID utente finale dell'app o a entrambi.
Questo criterio è un criterio estensibile e il suo utilizzo potrebbe comportare implicazioni in termini di costi o utilizzo, a seconda della licenza Apigee. Per informazioni sui tipi di criteri e sulle implicazioni per l'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 da includere
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, l'ID utente finale viene passato 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" }
Revocare l'accesso in base all'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 per sviluppatori associata al token. A questo punto puoi revocare i token in base a questo ID app.
Per ottenere un elenco di ID app per uno sviluppatore specifico, utilizza:
- API Method: organizations.developers.apps.list per ottenere un elenco di app associate a uno sviluppatore.
- API Method: organizations.developers.apps.get per ottenere i dettagli dell'app, incluso l'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 è presente alcun campo per l'ID utente finale nel token di accesso OAuth. Per abilitare la revoca dei token di accesso OAuth 2.0 in base all'ID utente finale, devi configurare le norme OAuthv2 in modo da includere l'ID utente nel token, come mostrato sopra.
Per ottenere un ID utente finale dell'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>
nelle tue norme.
Il seguente esempio si aspetta di trovare l'ID app dello 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.
Revocare 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>
nelle norme. <RevokeBeforeTimestamp>
specifica un'ora UTC epoch in millisecondi. Tutti i token emessi prima di questa data vengono revocati.
Il seguente esempio revoca i token di accesso per un'app per sviluppatori 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 del criterio 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 dei criteri:
Attributo | Descrizione | Predefinito | Presenza |
---|---|---|---|
name |
Il nome interno del criterio. Il valore dell'attributo Se vuoi, utilizza l'elemento |
N/D | Obbligatorio |
continueOnError |
Imposta su Imposta su |
falso | Facoltativo |
enabled |
Imposta su Imposta |
true | Facoltativo |
Elemento <DisplayName>
Da utilizzare insieme 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/D Se ometti questo elemento, viene utilizzato il valore dell'attributo |
---|---|
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 |
|
---|---|
Presenza |
Facoltativo |
Tipo | Stringa |
Valori validi |
Una variabile di flusso contenente una stringa di 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 hai un token di accesso JWT, viene revocato solo il token di aggiornamento emesso con il token di accesso. Per impostazione predefinita, i token di accesso JWT
non possono essere revocati.
Se false
,
viene revocato solo il token di accesso e il token di aggiornamento rimane invariato. Lo stesso comportamento si applica solo per i token di accesso opachi. I token di accesso JWT non possono essere revocati.
<Cascade>false<Cascade>
Predefinito |
falso |
---|---|
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 contenente l'ID utente o una stringa di token letterale.
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
Predefinito |
|
---|---|
Presenza |
Facoltativo |
Tipo | Stringa |
Valori validi |
Una variabile di flusso contenente una stringa di ID utente o una stringa letterale. |
Elemento <RevokeBeforeTimestamp>
Revocare i token emessi prima del timestamp. Questo elemento funziona con <AppId>
e <EndUserId>
per consentirti di revocare i token prima di un orario specifico.
Il valore predefinito è l'ora di esecuzione del 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 (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 nel futuro e non può essere precedente al 1° gennaio 2014. |
Variabili di flusso
Il criterio 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 Apigee quando questo criterio attiva un errore. Queste informazioni sono importanti se stai sviluppando regole di errore per gestire gli errori. Per scoprire di più, consulta Informazioni importanti sugli errori relativi alle norme e Gestione degli errori.
Errori di runtime
Questi errori possono verificarsi durante l'esecuzione del criterio. I nomi degli errori riportati di seguito sono le stringhe assegnate alla variabile fault.name
quando si verifica un errore. Per ulteriori dettagli, consulta la sezione sulle variabili di errore di seguito.
Codice guasto | 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 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, fai riferimento al 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 sopra. Il nome dell'errore è l'ultima parte del codice dell'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>