Anti-pattern: imposta una scadenza lunga per i token OAuth

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

Apigee Edge fornisce il framework OAuth 2.0 per proteggere le API. OAuth2 è uno degli schemi di autenticazione e autorizzazione basati su token open standard più diffusi. Consente alle applicazioni client di accedere alle API per conto degli utenti senza che questi debbano divulgare nome utente e password.

Apigee Edge consente agli sviluppatori di generare token di accesso e/o aggiornamento implementando uno qualsiasi dei quattro tipi di autorizzazione OAuth2 (credenziali client, password, impliciti e codice di autorizzazione), utilizzando il criterio OAuthv2. Le applicazioni client utilizzano i token di accesso per consumare API sicure. Ogni token di accesso ha una propria data di scadenza, che può essere impostata nel criterio OAuthv2.

I token di aggiornamento vengono emessi facoltativamente insieme ai token di accesso con alcuni dei tipi di autorizzazione. I token di aggiornamento vengono utilizzati per ottenere nuovi token di accesso validi dopo che il token di accesso originale è scaduto o è stato revocato. La data di scadenza dei token di aggiornamento può essere impostata anche nel criterio OAuthv2.

Antipattern

L'impostazione di una scadenza estesa per un token di accesso e/o un token di aggiornamento nel criterio OAuthv2 comporta l'accumulo di token OAuth e un maggiore utilizzo di spazio su disco sui nodi Cassandra.

Il seguente esempio di criterio OAuthV2 mostra una scadenza lunga di 200 giorni per i token di aggiornamento:

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

Nell'esempio precedente:

  • Per il token di accesso è impostato un tempo di scadenza ragionevolmente inferiore 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.
  • Poiché i token di aggiornamento scadono solo dopo 200 giorni, rimangono nel datastore (Cassandra) per molto tempo, generando un accumulo continuo.

Impatto

  • Porta a una crescita significativa dell'utilizzo dello spazio su disco nel datastore (Cassandra).
  • Per gli utenti del cloud privato, questo potrebbe aumentare i costi di archiviazione o, nel peggiore dei casi, il disco potrebbe essere pieno e causare errori di runtime o un'interruzione.

Best practice

Utilizza una scadenza appropriata inferiore per i token di accesso e di aggiornamento OAuth a seconda dei tuoi requisiti di sicurezza specifici, in modo che vengano eliminati rapidamente in modo definitivo ed evitare quindi l'accumulo.

Imposta la scadenza per i token di aggiornamento in modo che siano validi per un periodo un po' più lungo rispetto ai token di accesso. Ad esempio, se imposti 30 minuti per il token di accesso e poi imposti 60 minuti per il token di aggiornamento.

In questo modo:

  • È disponibile molto tempo per utilizzare un token di aggiornamento per generare nuovi token di accesso e aggiornamento dopo la scadenza del token.
  • I token di aggiornamento scadranno un po' di tempo dopo e possono essere eliminati in modo tempestivo per evitare accumuli.

Per approfondire