Quando un'applicazione client include un token web JSON (JWT) in una richiesta a un'API, Extensible Service Proxy (ESP) convalida il JWT prima di inviare la richiesta al backend dell'API. Questa pagina fornisce informazioni per la risoluzione dei problemi se la convalida JWT non va a buon fine e ESP restituisce un errore nella risposta al client. Consulta il documento RFC 7519 per ulteriori informazioni sui JWT.
Errore:401: Jwt issuer is not configured
Questo può accadere quando si esegue il deployment di ESPv2 in Cloud Run, il flag
--allow-unauthenticated
non viene utilizzato nel comando gcloud run deploy
.
Se il flag non viene utilizzato, il token JWT viene intercettato e verificato dal server IAM di controllo dell'accesso Cloud Run e non da ESPv2. IAM può utilizzare un emittente diverso da ESPv2.
</a=">
BAD_FORMAT
Controlla quanto segue:
- Assicurati che il JWT contenga un JSON valido.
- Verifica che l'intestazione JWT abbia il campo
"alg"
e sia impostata su una delle seguenti opzioni:"RS256"
,"HS256"
,"RS384"
,"HS384"
,"RS512"
o"HS512"
- Controlla il tipo di dati dei seguenti campi (se presenti) nel payload JWT:
- Le rivendicazioni
"iat"
(emesse),"exp"
(ora di scadenza) e"nbf"
(non prima) sono numeri maggiori di 0 e non stringhe. - I campi
"sub"
(oggetto),"iss"
(emittente) e"jti"
(ID JWT) sono stringhe. - La rivendicazione di
"aud"
(segmento di pubblico) è una stringa o un array di stringhe. - Assicurati che le seguenti rivendicazioni siano presenti nel payload JWT:
"sub"
(oggetto),"iss"
(emittente) e"aud"
(pubblico).
Di seguito è riportato un esempio di token JWT decodificato valido:
{ "alg": "RS256", "typ": "JWT", "kid": "42ba1e234ac91ffca687a5b5b3d0ca2d7ce0fc0a" } Payload: { "iss": "myservice@myproject.iam.gserviceaccount.com", "iat": 1493833746, "aud": "myservice.appspot.com", "exp": 1493837346, "sub": "myservice@myproject.iam.gserviceaccount.com" }Errore:
TIME_CONSTRAINT_FAILURE
Utilizza jwt.io per decodificare il JWT e assicurati che:
- La rivendicazione (data di scadenza)
"exp"
esiste. - Il valore della rivendicazione
"exp"
(ora di scadenza) è una data e un'ora future. La data e l'ora correnti devono essere precedenti alla data e all'ora di scadenza indicate nella rivendicazione"exp"
. - La rivendicazione di
"nbf"
(non prima) (se presente) è una data e un'ora passate. La data e l'ora correnti devono essere successive o uguali alla data e all'ora elencate nella rivendicazione"nbf"
.
UNKNOWN
Utilizza jwt.io per decodificare il JWT e assicurati che:
- Se la rivendicazione di
"iss"
(emittente) è un indirizzo email, le rivendicazioni di"sub"
(oggetto) e di"iss"
devono essere le stesse. Questo serve a garantire che per gli emittenti delle email il JWT venga emesso personalmente.
Errore: KEY_RETRIEVAL_ERROR
- Verifica che l'URI della chiave pubblica specificato nel campo
jwks_uri
nella sezioneauthentication: providers
del file di configurazione gRPC.yaml
sia corretto e valido.
Errore: Issuer not allowed
- Verifica che la rivendicazione di
"iss"
(emittente) nel token JWT corrisponda al campoissuer
nella sezioneauthentication: providers
del file di configurazione.yaml
gRPC.
Errore: Audience not allowed
Se la rivendicazione (pubblico) "aud"
in un token JWT corrisponde al nome del servizio Endpoints, l'ESP convalida il pubblico e ignora i valori audiences
nel file di configurazione gRPC .yaml
. Ad
esempio, se il nome del tuo servizio è
"myservice.endpoints.example-project-12345.cloud.goog"
,
un JWT con "aud"
impostato su
"myservice.endpoints.example-project-12345.cloud.goog"
o "https://myservice.endpoints.example-project-12345.cloud.goog"
è un pubblico
valido.
Se la rivendicazione di "aud"
non corrisponde al nome del servizio Endpoints:
- Verifica che la dichiarazione
"aud"
nel JWT corrisponda a uno deiaudiences
valori specificati nella sezioneauthentication: providers
del file di configurazione gRPC.yaml
.