Quando un'applicazione client include un token web JSON (JWT) in una richiesta a un'API, l'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. Per saperne di più sui JWT, consulta la RFC 7519.
Errore:401: Jwt issuer is not configured
Ciò può accadere quando viene eseguito 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 di controllo
dell'accesso IAM di Cloud Run <a=" docs="" managing-access"="" run="" securing="">e non da ESPv2. IAM potrebbe 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 uno dei seguenti valori:"RS256","HS256","RS384","HS384","RS512"o"HS512". - Controlla il tipo di dati dei seguenti campi (se presenti) nel payload JWT:
- I campi
"iat"(data di emissione),"exp"(ora di scadenza) e"nbf"(non prima di) sono numeri maggiori di 0 e non stringhe. - I campi
"sub"(oggetto),"iss"(emittente) e"jti"(ID JWT) sono stringhe. - L'attestazione
"aud"(pubblico) è una stringa o un array di stringhe. - Assicurati che nel payload JWT siano presenti le seguenti rivendicazioni:
"sub"(soggetto),"iss"(emittente) e"aud"(destinatario).
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"
}
TIME_CONSTRAINT_FAILURE
Utilizza jwt.io per decodificare il JWT e assicurati che:
- Esiste la rivendicazione
"exp"(tempo di scadenza). - Il valore dell'attestazione
"exp"(ora di scadenza) è una data e un'ora nel futuro. La data e l'ora correnti devono essere precedenti alla data e all'ora di scadenza indicate nella rivendicazione"exp". - L'attestazione
"nbf"(non prima) (se presente) è una data e un'ora nel passato. La data e l'ora correnti devono essere uguali o successive alla data e all'ora indicate nella rivendicazione"nbf".
UNKNOWN
Utilizza jwt.io per decodificare il JWT e assicurati che:
- Se l'attestazione
"iss"(emittente) è un indirizzo email, le attestazioni"sub"(soggetto) e"iss"devono essere uguali. Ciò garantisce che per gli emittenti di email, il JWT sia autoemesso.
Errore: KEY_RETRIEVAL_ERROR
- Verifica che l'URI della chiave pubblica specificato in
jwksUrinell'annotazioneApiIssuersia corretto e valido.
Errore: Issuer not allowed
- Verifica che l'attestazione
"iss"(emittente) nel token JWT corrisponda al valoreissuernell'annotazioneApiIssuer.
Errore: Audience not allowed
Se l'attestazione "aud" (pubblico) in un token JWT corrisponde al nome del servizio Endpoints, Cloud Endpoints Frameworks convalida il pubblico e ignora i valori impostati nell'elemento audiences nell'annotazione ApiIssuerAudience. Ad esempio, se il nome del servizio
è "myservice.appspot.com", un JWT con "aud" impostato su
"myservice.appspot.com" o "https://myservice.appspot.com" è un
pubblico valido.
Se l'attestazione "aud" non è uguale al nome del servizio Endpoints:
- Verifica che l'attestazione
"aud"nel JWT corrisponda a uno dei valori nell'elementoaudiencesnell'annotazioneApiIssuerAudience.