Convalida del token non riuscita perché le richieste di token non corrispondono al criterio di distribuzione

Scopri come risolvere i problemi di mancata corrispondenza delle richieste di convalida dei token durante la chiamata delle API, dopo aver creato correttamente gateway API e distribuzioni API con il servizio Gateway API.

Se il gateway API rifiuta una richiesta durante la convalida del token, le richieste di token potrebbero non corrispondere al criterio di autenticazione per la distribuzione. Il token può essere presente e ben formato, ma la convalida continua a non riuscire se l'emittente, l'audience, il tempo di scadenza o le richieste personalizzate richieste non corrispondono al criterio di instradamento.

Sintomi problema

Potresti vedere uno o più dei seguenti sintomi:

  • La richiesta viene rifiutata durante l'autenticazione, anche se la richiesta include un token formattato correttamente.
  • Il payload del token viene visualizzato valido dopo la decodifica, ma il gateway API nega comunque la richiesta.
  • Autenticazione non riuscita con errori di convalida delle richieste di rimborso per aud, iss, exp o il valore richiesta personalizzato.
  • La stessa applicazione riesce con un token e non riesce con un altro token da un emittente, pubblico o ambiente diverso.

Cause possibili

Questo problema può avere una o più delle seguenti cause:

  • La richiesta aud del token non corrisponde all'audience configurata per la distribuzione.
  • La richiesta iss del token non corrisponde all'emittente configurato.
  • Il criterio di autenticazione richiede una richiesta personalizzata mancante dal token.
  • Il criterio di autenticazione richiede un valore di richiesta personalizzato che non corrisponde al token.
  • Il token è scaduto oppure i valori dell'ora del token non rientrano nella tolleranza di clock-skew configurata.
  • Per la convalida basata sulla ricerca automatica o sull'introspezione, il set di richieste restituito non soddisfa il criterio di distribuzione.

Esaminare il criterio di autenticazione

Rivedere il criterio di autenticazione per l'instradamento che ha gestito la richiesta e verificare le impostazioni riportate di seguito.

  • authentication.audiences contiene l'audience per la quale è stato emesso il token.
  • authentication.issuers contiene il provider di identità che ha emesso il token.
  • verifyClaims include solo le richieste e i valori che l'instradamento deve applicare.
  • maxClockSkewInSeconds indica la differenza di tempo prevista tra l'emittente del token e i sistemi che convalidano la richiesta.

Se l'errore riguarda l'ora, confrontare il valore exp del token con l'ora UTC corrente e il limite di clock-skew configurato.

Rivedi messaggi di log

Esaminare il log di esecuzione del gateway API nel log per individuare la richiesta non riuscita. Utilizzare l'ID richiesta della risposta per trovare la voce di log corrispondente.

Cercare gli eventi di errore di autenticazione, ad esempio i seguenti eventi:

  • jwtAuthentication.authenticationFailed
  • tokenAuthentication.authenticationFailed

Rivedere quindi il messaggio di log per la convalida del sinistro non riuscita. Il messaggio può identificare la richiesta o il valore che non soddisfa la polizza.

  • Validation failed for 'exp' claim.
  • JWT token not issued by the configured issuers.
  • JWT token not issued for the configured audience.
  • JWT token missing required claim '<claim>'.
  • JWT token does not have the expected claim value for '<claim>'.

Convalida richieste token

Utilizzare il metodo di convalida che corrisponde al tipo di token.

Per un token Web JSON (JWT), decodificare il payload e confrontare le richieste di rimborso pertinenti con la configurazione di distribuzione. Controllare aud, iss, exp e i valori di richiesta personalizzati richiesti.

import base64
import json

token = "<paste-jwt-here>"
payload = token.split(".")[1]
payload += "=" * (-len(payload) % 4)
print(json.dumps(json.loads(base64.urlsafe_b64decode(payload)), indent=2))

Per un token opaco, chiamare direttamente l'endpoint di introspezione configurato. Confrontare i valori restituiti di richiesta aud, iss, exp e personalizzati con il criterio di distribuzione del gateway API.

curl -sS -u "<client-id>:<client-secret>" \
 -H "Content-Type: application/x-www-form-urlencoded" \
 -d "token=<paste-token-here>" \
 "https://<identity-provider>/oauth2/v1/introspect"

Convalidare il token rispetto alla distribuzione esatta e alla configurazione di instradamento che ha gestito la richiesta in cui si è verificato l'errore.

Correggi mancate corrispondenze richieste

Applicare la correzione corrispondente al controllo di convalida non riuscito:

  • Se l'audience è errata, aggiornare authentication.audiences o utilizzare un token emesso per l'audience prevista.
  • Se l'emittente è errato, aggiornare authentication.issuers o utilizzare un token del provider di identità previsto.
  • Se manca una richiesta personalizzata obbligatoria, aggiornare il processo di emissione del token o aggiornare verifyClaims in modo che corrisponda al requisito previsto.
  • Se un sinistro personalizzato obbligatorio ha un valore errato, correggere il valore del sinistro del token o aggiornare il valore previsto in verifyClaims.
  • Se il token è scaduto, riprovare a eseguire la richiesta con un token valido.
  • Se l'errore è dovuto alla distorsione dell'orologio, regolare maxClockSkewInSeconds solo quando è prevista la differenza di orario e accettabile per i requisiti di sicurezza.

Verifica convalida token

Dopo aver aggiornato il criterio o aver tentato di nuovo la richiesta con un token corretto, verificare il risultato:

  • Inviare di nuovo la stessa richiesta.
  • Confermare che la distribuzione accetta la richiesta.
  • Confermare che il log di esecuzione non mostra più l'errore di convalida della richiesta.

Per ulteriori informazioni

Per ulteriori informazioni, fare riferimento agli argomenti sotto riportati.