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 sulla risoluzione dei problemi relativi alla convalida JWT non riesce e ESP restituisce un errore nella risposta al client. Consulta: Per ulteriori informazioni, consulta RFC 7519 sui JWT.
Errore:401: Jwt issuer is not configured
Questo può accadere durante il deployment di ESPv2 in Cloud Run, se 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 da Cloud Run <a=" docs="" managing-access"="" run="" securing="">access
control IAM server e non da ESPv2. IAM può utilizzare un emittente diverso da
ESPv2.
</a=">
BAD_FORMAT
Controlla il seguenti:
- Assicurati che il token JWT contenga un JSON valido.
- Verifica che l'intestazione JWT contenga il campo
"alg"
e sia impostata su uno dei seguenti valori:"RS256"
,"HS256"
,"RS384"
,"HS384"
,"RS512"
o"HS512"
- Verifica il tipo di dati dei seguenti campi (se presenti) nella Payload JWT:
- I seguenti dati:
"iat"
(emesso alle ore),"exp"
(data di scadenza) e"nbf"
(non prima) le rivendicazioni sono numeri maggiori di 0 e non stringhe. "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 i seguenti claim:
"sub"
(subject),"iss"
(issuer) e"aud"
(audience).
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 assicurarti che:
- La rivendicazione
"exp"
(tempo di scadenza) esiste. - Il valore della rivendicazione
"exp"
(data e 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"
. - La dichiarazione
"nbf"
(non prima) (se presente) è una data e un'ora indicate nella in passato. La data e l'ora correnti devono essere successive o uguali alla data e all'ora indicate in la rivendicazione"nbf"
.
UNKNOWN
Utilizza jwt.io per decodificare il JWT e assicurarti che:
- Se la rivendicazione di
"iss"
(emittente) è un indirizzo email, l'importo di"sub"
(oggetto) e"iss"
di rivendicazioni devono essere uguali. Questo serve a garantire che per gli emittenti di email, il JWT sia emesso automaticamente.
Errore: KEY_RETRIEVAL_ERROR
- Verifica che l'URI della chiave pubblica specificato in
jwksUri
nell'annotazioneApiIssuer
sia corretto e valido.
Errore: Issuer not allowed
- Verifica che l'affermazione
"iss"
(emittente) nel token JWT corrisponda al valoreissuer
nell'annotazioneApiIssuer
.
Errore: Audience not allowed
Se l'affermazione "aud"
(segmento di pubblico) in un token JWT corrisponde al nome del servizio Endpoints, Cloud Endpoints Frameworks convalida il segmento di 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 segmento di pubblico valido.
Se la rivendicazione "aud"
non corrisponde al nome del servizio Endpoints:
- Verifica che l'attestazione
"aud"
nel JWT corrisponda a uno dei valori nel campo Elementoaudiences
nell'annotazioneApiIssuerAudience
.