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, i 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 criterio 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 maggiori informazioni sull'opzione display, vedi Visualizzare o nascondere gli attributi personalizzati nella risposta.

Ottenere 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 di questo tipo, 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 norme, l'elemento AccessToken deve fare riferimento a una variabile che contiene il token di accesso.