Questa pagina si applica a Apigee e Apigee ibridi.
Visualizza
documentazione di Apigee Edge.
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 è una norma estendibile e il suo utilizzo potrebbe comportare costi o di utilizzo delle applicazioni, a seconda della licenza Apigee. Per informazioni sui tipi di norme e le 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 per 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, 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.
Per ottenere un elenco di ID app per uno specifico sviluppatore, utilizza:
- Metodo: APIorganization.developers.apps.list per ottenere un elenco delle app associate a uno sviluppatore.
- Metodo: APIorganization.developers.apps.get per ottenere informazioni dettagliate sull'app, incluso l'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 Metodo: organization.developers.get.
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 agli elementi 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 dei criteri:
Attributo | Descrizione | Predefinito | Presenza |
---|---|---|---|
name |
Il nome interno della norma. Il valore dell'attributo Facoltativamente, utilizza l'elemento |
N/A | Obbligatorio |
continueOnError |
Impostalo su Imposta su |
false | Facoltativo |
enabled |
Imposta il criterio su Impostala su |
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 |
---|---|
Presenza | Facoltativo |
Tipo | Stringa |
<AppId> 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 |
|
---|---|
Presenza |
Facoltativo |
Tipo | Stringa |
Valori validi |
Una variabile di flusso contenente una stringa ID app o una stringa letterale. |
<Cascade> 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 disponi di un token di accesso JWT,
il token di aggiornamento emesso con il token di accesso viene revocato. 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. Si applica lo stesso comportamento
solo per token di accesso opaci. I token di accesso JWT non possono essere revocati.
<Cascade>false<Cascade>
Predefinito |
falso |
---|---|
Presenza |
Facoltativo |
Tipo | Booleano |
Valori validi | true oppure false |
<EndUserId> 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 |
|
---|---|
Presenza |
Facoltativo |
Tipo | Stringa |
Valori validi |
Una variabile di flusso contenente una stringa ID utente o una stringa letterale. |
<RevokeBeforeTimestamp> 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 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>