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 del token e del codice 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 artefatti OAuth, associa anche i metadati al token o al codice. Ad esempio, un token di accesso è associato a coppie nome/valore che definiscono il tempo di scadenza, l'app e lo sviluppatore associati e altre informazioni.

La rappresentazione JSON di un token di accesso Apigee è simile alla 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 a token OAuth e codici di autorizzazione

A volte è utile allegare metadati personalizzati a un token di accesso. Ad esempio, potresti voler aggiungere un nome utente, appartenenze a gruppi o ruoli per 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 autorizzazione o routing granulari in base ai dati personalizzati allegati al token.

Per allegare dati arbitrari a un token, utilizza l'elemento <Attributes> nel file della policy OAuthV2. Puoi specificare il nome e il valore dell'attributo personalizzato. Ad esempio, ecco una configurazione dei criteri 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 allegarli 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 restituiti nella risposta, dove possono essere visualizzati dall'app o trasmessi all'utente finale. Quando display è impostato su false, gli attributi personalizzati vengono archiviati nell'archivio 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 saperne di più sull'opzione display, consulta Visualizzazione o nascondimento degli attributi personalizzati nella risposta.

Recupero degli attributi del token di accesso personalizzato in fase di runtime

Quando viene effettuata una chiamata a OAuthV2/VerifyAccessToken, Apigee verifica il token cercandolo nell'archivio token. Apigee compila quindi un insieme di variabili di contesto contenenti informazioni sul token. tra cui:

  • 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 sono presenti attributi personalizzati nel token, questi vengono resi disponibili in una variabile di contesto con il nome accesstoken.{custom_attribute}. Ad esempio, supponiamo che venga emesso un token dalla norma mostrata sopra. Dopo la verifica di un token, verrà aggiunta una variabile di contesto denominata accesstoken.tenant_list, contenente il valore memorizzato al momento della generazione del token.

Le norme 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 alcune situazioni, vuoi che il proxy API aggiorni i metadati associati a un token di accesso in fase di runtime mentre una chiamata API viene elaborata su Apigee. Per aiutarti in questo, Apigee fornisce policy per ottenere e impostare gli attributi del token. Per maggiori informazioni, consulta le policy Get OAuth V2 Info e Set OAuth V2 Info.

In ognuna di queste policy, l'elemento AccessToken deve fare riferimento a una variabile che contiene il token di accesso.