Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.
Informazioni sui metadati di token e 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 archivia questi token e codici. In seguito, quando Apigee riceve richieste API in entrata contenenti questi token o codici, Apigee utilizza le informazioni archiviate per autorizzare le richieste.
Quando Apigee 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 Apigee ha il seguente aspetto:
{ "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 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, 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 maggiori informazioni sull'opzione display
, consulta
Mostrare o nascondere gli attributi personalizzati nella risposta.
Ottenere attributi dei token di accesso personalizzati in fase di runtime
Quando viene effettuata una chiamata a OAuthV2/VerifyAccessToken
, Apigee verifica il token cercandolo nell'archivio dei token. Apigee quindi compila 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 secondistatus
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, 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. 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.