Personalizzazione di token e codici di autorizzazione

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la 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 memorizza questi token e 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 elementi OAuth, allega anche i metadati al token o al codice. Ad esempio, un token di accesso è associato a coppie di nome/valore che definiscono la data e l'ora di scadenza, l'app e lo 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 associare 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 prendere decisioni di routing o autorizzazione granulari in base ai dati personalizzati allegati al token.

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, di seguito è riportata una configurazione del criterio che genera un token e associa 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 associarli implicitamente a un codice di autorizzazione (<Operation>GenerateAuthorizationCode</Operation>) o a un token (<Operation>GenerateAccessToken</Operation>) al momento della generazione.

Quando display è impostato su true (il valore predefinito), gli attributi personalizzati vengono riportati nella risposta, dove possono essere visualizzati dall'app o trasmessi all'utente finale. Quando display è impostato su false, gli attributi personalizzati vengono archiviati nello spazio di archiviazione dei dati, 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, consulta Visualizzare 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 nell'apposito store. Apigee compila quindi un 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 un token venga emesso 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 memorizzati al loro interno.

Impostazione e aggiornamento degli attributi personalizzati in fase di runtime

In alcuni casi, è consigliabile che il proxy API aggiorni i metadati associati a un token di accesso in fase di esecuzione durante l'elaborazione di una chiamata API su Apigee. Per aiutarti, Apigee fornisce criteri per ottenere e impostare gli attributi dei token. Per ulteriori informazioni, consulta Ottieni le norme relative alle informazioni di OAuth V2 e Imposta le norme relative alle informazioni di OAuth V2.

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