Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Apigee fornisce un insieme di strumenti e criteri che ti consentono di implementare l'autenticazione basata su token OAuth 2.0 per proteggere le tue API. OAuth2, descritto nella RFC 6749 di IETF, è lo standard aperto più supportato per l'autenticazione e l'autorizzazione delle API. Stabilisce il token come credenziale in formato standard che le applicazioni client inviano alle implementazioni dell'API. L'implementazione dell'API può verificare il token per determinare se il client è autorizzato ad accedere all'API.
Apigee consente agli sviluppatori di generare token di accesso e/o aggiornamento implementando uno dei quattro tipi di concessione OAuth2: credenziali client, password, implicita e codice di autorizzazione, utilizzando le norme OAuth 2.0. Inoltre, gli sviluppatori di API possono utilizzare Apigee per implementare autorizzazioni personalizzate, incluse quelle che seguono il pattern di scambio di token, come descritto nel documento IETF RFC 8693. Le applicazioni client utilizzano quindi i token di accesso per utilizzare API sicure. Ogni token di accesso ha il proprio termine di scadenza, che può essere impostato nel regolamento OAuth 2.0.
Apigee può facoltativamente generare e restituire un token di aggiornamento insieme al token di accesso con alcuni dei tipi di concessione. Un client utilizza un token di aggiornamento per ottenere un nuovo token di accesso dopo la revoca o la scadenza del token di accesso originale. La data e l'ora di scadenza del token di aggiornamento possono essere impostate anche nel criterio OAuthv2.
Antipattern
L'impostazione di un periodo di scadenza lungo per un token di accesso o un token di aggiornamento nel criterio OAuthv2 comporta un periodo di vulnerabilità più lungo in caso di fuga di token, il che rappresenta un rischio per la sicurezza. Inoltre, può portare all'accumulo di token OAuth nello spazio di archiviazione permanente, con un conseguente calo del rendimento nel tempo.
Esempio 1
Il seguente esempio di criterio OAuthV2 mostra un periodo di scadenza lungo di 10 giorni per i token di accesso:
<OAuthV2 name="OAuth-GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>864000000</ExpiresIn> <!-- 10 days --> <RefreshTokenExpiresIn>864000000</RefreshTokenExpiresIn> <!-- 10 days --> <SupportedGrantTypes> <GrantType>authorization_code</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
Nell'esempio riportato sopra:
- La durata del token di accesso è impostata su 10 giorni.
- Anche la durata del token di aggiornamento è impostata su 10 giorni.
Impatto
I token di accesso longevi rappresentano un rischio per la sicurezza. In caso di fuga o perdita di token, i token di breve durata scadranno naturalmente e diventeranno inutili, mentre i token di lunga durata continueranno a concedere l'accesso all'API per un periodo di tempo potenzialmente prolungato, aumentando la finestra di vulnerabilità.
Un token di accesso deve avere una durata breve, probabilmente di circa 30 minuti o meno, e questa durata deve essere notevolmente inferiore alla durata del token di aggiornamento.
Esempio 2
Il seguente esempio di criterio OAuthV2 mostra un periodo di scadenza lungo di 200 giorni per i token di aggiornamento:
<OAuthV2 name="OAuth-GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days --> <SupportedGrantTypes> <GrantType>authorization_code</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
Nell'esempio riportato sopra:
- Il token di accesso è impostato con una scadenza ragionevole e breve di 30 minuti.
- Il token di aggiornamento è impostato con una scadenza molto lunga di 200 giorni.
- Se il traffico verso questa API è di 10 richieste al secondo, può generare fino a 864.000 token in un giorno.
- I token di aggiornamento scadono dopo 200 giorni e si accumulano nell'datastore per l'intera durata.
Impatto
La durata estesa del token di aggiornamento può potenzialmente portare a un peggioramento delle prestazioni nel tempo, poiché un numero elevato di token si accumula nello datastore. In Apigee hybrid, un accumulo eccessivo di token può anche contribuire all'esaurimento dello spazio su disco nel livello di persistenza.
Best practice
Utilizza una data di scadenza per i token di accesso e aggiornamento OAuth appropriata per i tuoi requisiti di sicurezza specifici, per ridurre il periodo di vulnerabilità dei token trapelati ed evitare l'accumulo di token nell'datastore. Un buon punto di partenza per la durata del token di accesso è 30 minuti; per la durata del token di aggiornamento, inizia con 24 ore.
Imposta la data e l'ora di scadenza dei token di aggiornamento in modo che siano validi per un multiplo della durata dei token di accesso. Ad esempio, se imposti 30 minuti per il token di accesso, imposta la durata del token di aggiornamento su 24 ore, 7 giorni o qualsiasi altro valore appropriato per l'esperienza utente che devi supportare.