Falha na validação do token porque as reivindicações do token não correspondem à política de implantação
Descubra como diagnosticar e solucionar problemas de incompatibilidades de reivindicação de validação de token ao chamar APIs, tendo criado com sucesso gateways de API e implantações de API com o serviço API Gateway.
Se o Gateway de API rejeitar uma solicitação durante a validação do token, as reivindicações do token poderão não corresponder à política de autenticação da implantação. O token pode estar presente e bem formado, mas a validação ainda falhará se o emissor, o público, o tempo de expiração ou as reivindicações personalizadas necessárias não corresponderem à política de rota.
Sintomas do Problema
Você pode ver um ou mais dos seguintes sintomas:
- A solicitação é rejeitada durante a autenticação, mesmo que a solicitação inclua um token formatado corretamente.
- O payload do token parece válido depois que você o decodifica, mas o Gateway de API ainda nega a solicitação.
- Falha na autenticação com erros de validação de reivindicação para
aud,iss,expou valor de reivindicação personalizado necessário. - O mesmo aplicativo é bem-sucedido com um token e falha com outro token de um emissor, público ou ambiente diferente.
Possíveis Causas
Esse problema pode ter uma ou mais das seguintes causas:
- A reivindicação
auddo token não corresponde ao público-alvo configurado para a implantação. - A reivindicação
issdo token não corresponde ao emissor configurado. - A política de autenticação requer uma reivindicação personalizada que está ausente do token.
- A política de autenticação requer um valor de reivindicação personalizado que não corresponda ao token.
- O token expirou ou os valores de tempo do token estão fora da permissão de alteração de relógio configurada.
- Para validação baseada em descoberta ou em introspecção, o conjunto de reivindicações retornado não atende à política de implantação.
Revisar a Política de Autenticação
Revise a política de autenticação da rota que tratou a solicitação e verifique as seguintes definições:
authentication.audiencescontém o público para o qual o token foi emitido.authentication.issuerscontém o provedor de identidades que emitiu o token.verifyClaimsinclui apenas as reivindicações e os valores que a rota deve impor.- O
maxClockSkewInSecondscontabiliza a diferença de tempo esperada entre o emissor do token e os sistemas que validam a solicitação.
Se a falha estiver relacionada ao tempo, compare o valor exp do token com o horário UTC atual e a permissão de desvio de relógio configurada.
Revisar Mensagens de Log
Revise o log de execução do Gateway de API no Logging para obter a solicitação com falha. Use o ID da solicitação da resposta para localizar a entrada de log correspondente.
Procure eventos de falha de autenticação, como os seguintes eventos:
jwtAuthentication.authenticationFailedtokenAuthentication.authenticationFailed
Em seguida, revise a mensagem de log para a validação da reivindicação com falha. A mensagem pode identificar a reivindicação ou o valor que não atendeu à apólice.
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>'.
Validar as Reivindicações de Token
Use o método de validação que corresponde ao tipo de token.
Para um JWT (JSON Web Token), decodifique o payload e compare as reivindicações relevantes com a configuração de implantação. Verifique o aud, o iss, o exp e os valores de reivindicação personalizados obrigatórios.
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))Para um token opaco, chame o ponto final de introspecção configurado diretamente. Compare os valores retornados aud, iss, exp e de reivindicação personalizada com a política de implantação do Gateway de 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"Valide o token em relação à implantação exata e à configuração de rota que tratou a solicitação com falha.
Corrigir divergências de pedido de indenização
Aplique a correção que corresponde à verificação de validação com falha:
- Se o público-alvo estiver errado, atualize
authentication.audiencesou use um token emitido para o público-alvo esperado. - Se o emissor estiver errado, atualize
authentication.issuersou use um token do provedor de identidades esperado. - Se uma reivindicação personalizada obrigatória estiver ausente, atualize o processo de emissão de token ou atualize
verifyClaimspara corresponder ao requisito pretendido. - Se uma reivindicação personalizada obrigatória tiver o valor incorreto, corrija o valor da reivindicação de token ou atualize o valor esperado em
verifyClaims. - Se o token expirar, repita a solicitação com um token válido.
- Se a falha for causada pela defasagem do relógio, ajuste
maxClockSkewInSecondssomente quando a diferença de tempo for esperada e aceitável para seus requisitos de segurança.
Verificar Validação de Token
Depois de atualizar a política ou tentar novamente a solicitação com um token corrigido, verifique o resultado:
- Envie a mesma solicitação novamente.
- Confirme se a implantação aceita a solicitação.
- Confirme se o log de execução não mostra mais a falha na validação da reivindicação.
Para obter mais informações
Para obter mais informações, consulte: