Personalizzazione di token e codici di autorizzazione

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza documentazione di Apigee Edge.

Informazioni sui metadati dei token e dei codici di autorizzazione

Apigee genera token di accesso OAuth, token di aggiornamento e codici di autorizzazione e li distribuisce alle app autenticate. Al momento della generazione, Apigee archivia i token e i codici. In seguito, quando Apigee riceve richieste API in entrata con questi token o codici, utilizza le informazioni memorizzate per autorizzare le richieste.

Quando Apigee genera questi artefatti OAuth, collega anche i metadati al token o al codice. Per Ad esempio, un token di accesso è associato a coppie nome/valore che definiscono data e ora di scadenza, app e sviluppatore associati, e altre informazioni.

La rappresentazione JSON di un token di accesso Apigee è la seguente:

{
  "issued_at" : "1372170159093",
  "application_name" : "ccd1803b-b557-4520-bd62-ddd3abf8e501",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[Product1,Product2]",
  "api_product_list_json" : ["Product1", "Product2"],
  "expires_in" : "3599", //--in seconds
  "developer.email" : "joe@weathersample.com",
  "organization_id" : "0",
  "refresh_token" : "82XMXgDyHTpFyXOaApj8C2AGIPnN2IZe",
  "client_id" : "deAVedE0W9Z9U35PAMaAJYphBJCGdrND",
  "access_token" : "shTUmeI1geSKin0TODcGLXBNe9vp",
  "organization_name" : "apifactory",
  "refresh_count" : "0"
}

Aggiunta di attributi personalizzati ai token OAuth e ai codici di autorizzazione

A volte è utile collegare metadati personalizzati a un token di accesso. Ad esempio, potresti volere aggiungere un nome utente, i ruoli o le iscrizioni ai gruppi di un utente, un ID cliente, un identificatore di sessione o altre informazioni arbitrarie a un token. In Apigee, questi dati sono chiamati "attributi personalizzati". Successivamente, quando il token viene verificato nell'ambito di una richiesta API, questi dati vengono resi disponibili al proxy API tramite le variabili di contesto. Un proxy API potrebbe rendere di autorizzazione e di routing granulari in base ai dati personalizzati collegati di accesso.

Per associare dati arbitrari a un token, utilizza l'elemento <Attributes> nel criterio OAuthV2. Puoi specificare il nome e il valore dell'attributo personalizzato. Ad esempio, ecco un esempio della configurazione dei criteri che genera un token e collega un attributo personalizzato denominato "tenant_list" al token:

<OAuthV2 name="GenerateAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>600000</ExpiresIn>
  <GenerateResponse />
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GrantType>request.queryparam.grant_type</GrantType>
  <Attributes> 
    <Attribute name="tenant_list" ref="tenant_list_retrieved_from_external_service" display="false"/>
  </Attributes>
</OAuthV2>

Puoi specificare più attributi personalizzati e collegarli implicitamente a un codice di autorizzazione (<Operation>GenerateAuthorizationCode</Operation>) o un token (<Operation>GenerateAccessToken</Operation>) al momento di classificazione.

Se il criterio display è impostato su true (valore predefinito), gli attributi personalizzati vengono restituiti nella risposta, dove potrebbero essere visualizzabili dall'app o trasmessi all'utente finale. Se il criterio display viene impostato su false, gli attributi personalizzati vengono archiviati nei dati di archiviazione, ma non vengono restituiti nel messaggio di risposta. In entrambi i casi, i dati personalizzati sono disponibili per i criteri all'interno del proxy API dopo la verifica del token.

Per ulteriori informazioni sull'opzione display, vedi Mostrare o nascondere gli attributi personalizzati nella risposta.

Ottenere gli attributi dei token di accesso personalizzati in fase di esecuzione

Quando viene effettuata una chiamata a OAuthV2/VerifyAccessToken, Apigee verifica il token cercandolo nel token store. Apigee compila quindi una insieme di variabili di contesto contenenti informazioni sul token. Queste includono:

  • organization_name
  • developer.id
  • developer.app.name
  • client_id
  • grant_type
  • token_type
  • access_token
  • issued_at
  • expires_in //--in seconds
  • status
  • scope
  • apiproduct.name*

Se il token contiene attributi personalizzati, questi vengono resi disponibili in una variabile di contesto con il nome accesstoken.{custom_attribute}. Ad esempio: supponiamo che venga emesso un token dal criterio mostrato sopra. Dopo aver verificato un token di questo tipo, esisterebbe un'altra variabile di contesto denominata accesstoken.tenant_list, contenente il valore memorizzato al momento della generazione del token.

I criteri o le condizioni possono quindi fare riferimento a queste variabili e modificare il comportamento in base ai valori archiviati al suo interno.

Impostazione e aggiornamento degli attributi personalizzati in fase di runtime

In alcune situazioni, è consigliabile che il proxy API aggiorni i metadati associati a un il token di accesso in fase di runtime, mentre è in corso l'elaborazione di una chiamata API su Apigee. Per aiutarti, Apigee fornisce criteri per recuperare e impostare attributi dei token. Per ulteriori informazioni, vedi Ottieni informazioni OAuth V2 policy e Imposta OAuth. Norme relative alle informazioni V2.

In ognuno di questi criteri, l'elemento AccessToken deve fare riferimento a una variabile che contiene il token di accesso.