Norme di GetOAuthV2Info

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

Cosa

Recupera gli attributi dei token di accesso, dei token di aggiornamento, dei codici di autorizzazione e degli attributi dell'app client e popola le variabili con i valori di questi attributi.

Questa policy è utile quando devi configurare un comportamento dinamico e condizionale in base a un valore in un token o in un codice di autorizzazione. Ogni volta che viene eseguita la convalida del token, le variabili vengono popolate automaticamente con i valori degli attributi del token. Tuttavia, nei casi in cui la convalida del token non è stata eseguita, puoi utilizzare questa funzionalità per popolare esplicitamente le variabili con i valori degli attributi di un token. Vedi anche Personalizzazione di token e codici di autorizzazione.

Un token di accesso che passi a questa policy deve essere valido, altrimenti la policy genererà un invalid_access_token errore.

Esempi

Gli esempi seguenti utilizzano la policy Get OAuth V2 Info per recuperare informazioni su vari componenti del flusso di lavoro OAuth2 e quindi accedere a queste informazioni all'interno del codice.

Token di accesso

Per ottenere un riferimento a un token di accesso, utilizza l'elemento <AccessToken> nella policy.

L'esempio seguente prevede di trovare il token di accesso in un parametro di query denominato "access_token" (i dettagli di implementazione effettivi dipendono da te):

<GetOAuthV2Info name="MyTokenAttrsPolicy">
  <AccessToken ref="request.queryparam.access_token"></AccessToken>
</GetOAuthV2Info>

Dato il token di accesso, la policy cerca il profilo del token e popola un insieme di variabili con i dati del profilo.

Puoi quindi accedere alle variabili utilizzando JavaScript o un altro mezzo. L'esempio seguente recupera gli ambiti associati al token di accesso utilizzando JavaScript:

var scope = context.getVariable('oauthv2accesstoken.MyTokenAttrsPolicy.scope');

Tieni presente che per accedere a queste variabili nel codice, devi anteporre "oauthv2accesstoken". Per un elenco completo delle variabili disponibili tramite il token di accesso, consulta Variabili del token di accesso.

Codice di autorizzazione

Per ottenere gli attributi del codice di autorizzazione, utilizza l'elemento <AuthorizationCode> nella policy.

L'esempio seguente prevede di trovare il token di accesso in un parametro del modulo denominato "code" (i dettagli di implementazione effettivi dipendono da te):

<GetOAuthV2Info name="MyAuthCodeAttrsPolicy">
  <AuthorizationCode ref="request.formparam.code"></AuthorizationCode>
</GetOAuthV2Info>

Dato il codice di autorizzazione, la policy cerca le informazioni del codice e popola un insieme di variabili con i dati del codice di autorizzazione.

Puoi quindi accedere alle variabili utilizzando JavaScript o un altro mezzo. L'esempio seguente recupera un attributo personalizzato associato al codice di autorizzazione utilizzando JavaScript:

var attr = context.getVariable(oauthv2authcode.MyAuthCodeAttrsPolicy.custom_attribute_name);

Tieni presente che per accedere a queste variabili nel codice, devi anteporre "oauthv2authcode". Per un elenco completo delle variabili disponibili tramite il codice di autorizzazione, consulta Variabili del codice di autorizzazione.

Token di aggiornamento

Per ottenere gli attributi del token di aggiornamento, utilizza l'elemento <RefreshToken> nella tua policy.

L'esempio seguente prevede di trovare il token di accesso in un parametro di query denominato "refresh_token" (i dettagli di implementazione effettivi dipendono da te):

<GetOAuthV2Info name="MyRefreshTokenAttrsPolicy">
  <RefreshToken ref="request.queryparam.refresh_token"/>
</GetOAuthV2Info>

Dato il token di aggiornamento, la policy cerca le informazioni del token di aggiornamento e popola un insieme di variabili con i dati del token di aggiornamento.

Puoi quindi accedere a queste variabili utilizzando JavaScript o un altro mezzo. L'esempio seguente recupera un attributo personalizzato associato al token di aggiornamento utilizzando JavaScript:

var attr = context.getVariable(oauthv2refreshtoken.MyRefreshTokenAttrsPolicy.accesstoken.custom_attribute_name);

Tieni presente che per accedere alle variabili nel codice, devi anteporre "oauthv2refreshtoken". Per un elenco completo delle variabili disponibili tramite il token di aggiornamento, consulta Variabili del token di aggiornamento.

Statico

In alcuni rari casi, potrebbe essere necessario ottenere il profilo di un token configurato staticamente (uno che non è accessibile tramite una variabile). Puoi farlo fornendo il valore del token di accesso come elemento.

<GetOAuthV2Info name="GetTokenAttributes">
  <AccessToken>shTUmeI1geSKin0TODcGLXBNe9vp</AccessToken>
</GetOAuthV2Info>

Puoi farlo anche con tutti gli altri tipi di token (ID client, codice di autorizzazione e token di aggiornamento ).

ID client

Questo esempio mostra come recuperare informazioni sull'app client utilizzando l'ID client. Al momento dell'esecuzione, la policy popola un insieme di variabili con le informazioni del client. In questo caso, la policy prevede di trovare l'ID client in un parametro di query denominato client_id. Dato l'ID client, la policy cerca il profilo del client e popola un insieme di variabili con i dati del profilo. Le variabili avranno il prefisso con oauthv2client.

<GetOAuthV2Info name="GetClientAttributes">
  <ClientId ref="request.queryparam.client_id"></ClientId>
</GetOAuthV2Info>

Puoi quindi accedere alle variabili utilizzando JavaScript o un altro mezzo. Ad esempio, per ottenere il nome dell'app sviluppatore e l'indirizzo email dello sviluppatore associati all'app client utilizzando JavaScript:

context.getVariable("oauthv2client.GetClientAttributes.developer.email");
context.getVariable("oauthv2client.GetClientAttributes.developer.app.name");

Riferimento elemento

Il riferimento all'elemento descrive gli elementi e gli attributi della policy GetOAuthV2Info.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="GetOAuthV2Info-1"
    <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
    <AccessToken ref="variable"></AccessToken>
    <AuthorizationCode ref="variable"></AuthorizationCode>
    <ClientId ref="variable"></ClientId>
    <RefreshToken ref="variable"></RefreshToken>
</GetOAuthV2Info>

Attributi <GetOAuthV2Info>

<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Get-OAuth-v20-Info-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

Elemento <AccessToken>

Recupera il profilo di un token di accesso. Passa una variabile che contiene la stringa del token di accesso o una stringa del token letterale (caso raro). In questo esempio, il token di accesso viene recuperato da un parametro di query passato in una richiesta. Utilizza l'elemento <IgnoreAccessTokenStatus> se vuoi restituire informazioni per un token revocato o scaduto.

<AccessToken ref="request.queryparam.access_token"></AccessToken>

Valore predefinito:

request.formparam.access_token (un valore x-www-form-urlencoded specificato nel corpo della richiesta )

Presenza:

Facoltativo

Tipo: Stringa
Valori validi:

Una variabile di flusso contenente una stringa del token di accesso o una stringa letterale.


Elemento <AuthorizationCode>

Recupera il profilo di un codice di autorizzazione. Passa una variabile che contiene la stringa del codice di autorizzazione o una stringa del token letterale (caso raro). In questo esempio, il codice di autorizzazione viene recuperato da un parametro di query passato in una richiesta. Per un elenco delle variabili popolate da questa operazione, consulta "Variabili di flusso".

<AuthorizationCode ref="request.queryparam.authorization_code"></AuthorizationCode>

Valore predefinito:

request.formparam.access_token (un valore x-www-form-urlencoded specificato nel corpo della richiesta )

Presenza:

Facoltativo

Tipo: Stringa
Valori validi:

Una variabile di flusso contenente una stringa del codice di autorizzazione o una stringa letterale.

Elemento <ClientId>

Recupera le informazioni relative a un ID client. In questo esempio, l'ID client viene recuperato da un parametro di query passato in una richiesta. Per un elenco delle variabili popolate da questa operazione, consulta "Variabili di flusso".

<ClientId ref="request.queryparam.client_id"></ClientId>

Valore predefinito:

request.formparam.access_token (un valore x-www-form-urlencoded specificato nel corpo della richiesta )

Presenza:

Facoltativo

Tipo: Stringa
Valori validi: Una variabile di flusso contenente una stringa del codice di autorizzazione o una stringa letterale.

Elemento <IgnoreAccessTokenStatus>

Restituisce le informazioni sul token anche se il token è scaduto o è stato revocato. Questo elemento può essere utilizzato solo con i token di accesso. Per impostazione predefinita, le informazioni per altre entità come i token di aggiornamento e i codici di autorizzazione vengono restituite indipendentemente dal loro stato.

<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>

Valore predefinito:

false

Presenza:

Facoltativo

Tipo: Booleano
Valori validi: true o false

Elemento <RefreshToken>

Recupera il profilo di un token di aggiornamento. Passa una variabile che contiene la stringa del token di aggiornamento o una stringa del token letterale (caso raro). In questo esempio, il token di aggiornamento viene recuperato da un parametro di query passato in una richiesta. Per un elenco delle variabili popolate da questa operazione, consulta "Variabili di flusso".

<RefreshToken ref="request.queryparam.refresh_token"></RefreshToken>

Valore predefinito:

request.formparam.access_token (un valore x-www-form-urlencoded specificato nel corpo della richiesta )

Presenza:

Facoltativo

Tipo: Stringa
Valori validi:

Una variabile di flusso contenente una stringa del token di aggiornamento o una stringa letterale.

Variabili di flusso

La policy GetOAuthV2Info popola queste variabili e viene in genere utilizzata nei casi in cui sono necessari i dati del profilo, ma non è ancora stata eseguita una concessione o una convalida. .

Variabili dell'ID client

Queste variabili vengono popolate quando viene impostato l'elemento ClientId:

oauthv2client.{policy_name}.client_id
oauthv2client.{policy_name}.client_secret
oauthv2client.{policy_name}.redirection_uris // Note the spelling -- 'redirection_uris'
oauthv2client.{policy_name}.developer.email
oauthv2client.{policy_name}.developer.app.name
oauthv2client.{policy_name}.developer.id
oauthv2client.{policy_name}.{developer_app_custom_attribute_name}

Variabili del token di accesso

Queste variabili vengono popolate quando viene impostato l'elemento AccessToken:

oauthv2accesstoken.{policy_name}.developer.id
oauthv2accesstoken.{policy_name}.developer.app.name
oauthv2accesstoken.{policy_name}.developer.app.id
oauthv2accesstoken.{policy_name}.developer.email

oauthv2accesstoken.{policy_name}.organization_name
oauthv2accesstoken.{policy_name}.api_product_list

oauthv2accesstoken.{policy_name}.access_token
oauthv2accesstoken.{policy_name}.scope
oauthv2accesstoken.{policy_name}.expires_in //in seconds
oauthv2accesstoken.{policy_name}.status
oauthv2accesstoken.{policy_name}.client_id
oauthv2accesstoken.{policy_name}.accesstoken.{custom_attribute_name}

oauthv2accesstoken.{policy_name}.refresh_token
oauthv2accesstoken.{policy_name}.refresh_token_status
oauthv2accesstoken.{policy_name}.refresh_token_expires_in //in seconds

oauthv2accesstoken.{policy_name}.refresh_count
oauthv2accesstoken.{policy_name}.refresh_token_issued_at
oauthv2accesstoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED

Variabili del codice di autorizzazione

Queste variabili vengono popolate quando viene impostato l'elemento AuthorizationCode:

oauthv2authcode.{policy_name}.code
oauthv2authcode.{policy_name}.scope
oauthv2authcode.{policy_name}.redirect_uri
oauthv2authcode.{policy_name}.client_id
oauthv2authcode.{policy_name}.{auth_code_custom_attribute_name}

Variabili del token di aggiornamento

Queste variabili vengono popolate quando viene impostato l'elemento RefreshToken:

oauthv2refreshtoken.{policy_name}.developer.id
oauthv2refreshtoken.{policy_name}.developer.app.name
oauthv2refreshtoken.{policy_name}.developer.app.id
oauthv2refreshtoken.{policy_name}.developer.email
oauthv2refreshtoken.{policy_name}.organization_name
oauthv2refreshtoken.{policy_name}.api_product_list

oauthv2refreshtoken.{policy_name}.access_token
oauthv2refreshtoken.{policy_name}.scope
oauthv2refreshtoken.{policy_name}.expires_in //in seconds

oauthv2refreshtoken.{policy_name}.status
oauthv2refreshtoken.{policy_name}.client_id
oauthv2refreshtoken.{policy_name}.accesstoken.{custom_attribute_name}

oauthv2refreshtoken.{policy_name}.refresh_token
oauthv2refreshtoken.{policy_name}.refresh_token_status
oauthv2refreshtoken.{policy_name}.refresh_token_expires_in //in seconds

oauthv2refreshtoken.{policy_name}.refresh_count
oauthv2refreshtoken.{policy_name}.refresh_token_issued_at
oauthv2refreshtoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED

Schema

Ogni tipo di policy è definito da uno schema XML (.xsd). Per riferimento, gli schemi delle policy sono disponibili su GitHub.

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.access_token_expired 500 Il token di accesso inviato al criterio è scaduto.
steps.oauth.v2.authorization_code_expired 500 Il codice di autorizzazione inviato al criterio è scaduto.
steps.oauth.v2.invalid_access_token 500 Il token di accesso inviato al criterio non è valido.
steps.oauth.v2.invalid_client-invalid_client_id 500 L'ID client inviato al criterio non è valido.
steps.oauth.v2.invalid_refresh_token 500 Il token di aggiornamento inviato al criterio non è valido.
steps.oauth.v2.invalid_request-authorization_code_invalid 500 Il codice di autorizzazione inviato al criterio non è valido.
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 Vedi questo post della community Apigee per informazioni su come risolvere questo errore.
steps.oauth.v2.refresh_token_expired 500 Il token di aggiornamento inviato al criterio è scaduto.

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":"ClientId is Invalid",
      "detail":{  
         "errorcode":"keymanagement.service.invalid_client-invalid_client_id"
      }
   }
}

Esempio di regola di errore

<FaultRule name="OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientIdResponse</Name>
    </Step>
    <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition>
</FaultRule>

Argomenti correlati