Personalizzazione di token e codici di autorizzazione

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Informazioni sui metadati dei token

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

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

La rappresentazione JSON di un token di accesso Edge è 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 ai token OAuth

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

Per collegare 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 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, che puoi collegare 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 (impostazione predefinita), gli attributi personalizzati vengono restituiti nella risposta, dove potrebbero essere visibili all'app o trasmessi all'utente finale. Quando display è impostato su false, gli attributi personalizzati vengono archiviati nel datastore, 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 Mostrare o nascondere gli attributi personalizzati nella risposta.

Recupero degli attributi personalizzati al runtime

Quando viene effettuata una chiamata a OAuthV2/VerifyAccessToken, Apigee Edge verifica il token cercandolo nell'archivio dei token. Apigee Edge completa 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
  • scade_in //--in secondi
  • riconosciuto
  • ambito
  • 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, supponi che sia stato emesso un token dal criterio mostrato sopra. Dopo aver verificato un token di questo tipo, ci sarebbe un'ulteriore variabile di contesto denominata accesstoken.tenant_list, contenente il valore archiviato 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 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 runtime mentre è in corso l'elaborazione di una chiamata API su Apigee Edge. Per aiutarti, Apigee fornisce criteri per ottenere e impostare gli attributi dei token. Per maggiori informazioni, consulta Ottenere i criteri relativi alle informazioni OAuth V2 e Impostare i criteri relativi alle informazioni OAuth V2.

In ciascuno di questi criteri, l'elemento AccessToken deve fare riferimento a una variabile contenente il token di accesso.

Puoi anche utilizzare le API Edge per aggiornare gli attributi personalizzati associati a un token. Consulta la documentazione dell'API per il metodo Aggiornamento del token di accesso OAuth 2.0.