Claims e Tokens de ID do OpenID Connect
Decodifique tokens de ID baseados em JWT, compreenda a validação de claims e implemente OIDC corretamente.
Claims e Tokens de ID do OpenID Connect é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.
OIDC como Camada de Identidade
O OpenID Connect (OIDC) adiciona uma camada de identidade sobre o OAuth 2.0. Enquanto o OAuth 2.0 gerencia a autorização (o que este aplicativo pode acessar?), o OIDC responde à questão da identidade (quem é o usuário?). O OIDC é implementado adicionando o escopo "openid" a uma solicitação do OAuth 2.0, o que faz o servidor de autorização retornar um token de ID junto com o token de acesso.
Token de ID como JWT
O token de ID do OIDC é um JSON Web Token (JWT) que contém declarações sobre o usuário autenticado. O JWT é assinado pelo servidor de autorização usando sua chave privada (normalmente RS256 ou ES256), e a parte confiável (o aplicativo cliente) verifica a assinatura usando as chaves públicas publicadas pelo servidor de autorização (ponto de acesso JWKS).
Declarações Padrão do Token de ID
Declarações obrigatórias e usadas com frequência no token de ID: "sub" (sujeito, identificador exclusivo do usuário), "iss" (emissor, URL do servidor de autorização), "aud" (público-alvo, ID do cliente), "exp" (timestamp Unix de expiração), "iat" (timestamp Unix de emissão). Opcionais: "auth_time" (quando a autenticação ocorreu), "nonce" (prevenção de repetição), "at_hash" (hash do token de acesso), "acr" (classe do contexto de autenticação), "amr" (métodos de autenticação usados).
Ponto de Acesso UserInfo
O ponto de acesso UserInfo do OIDC retorna declarações adicionais sobre o usuário autenticado quando é chamado com um token de acesso válido. Os clientes solicitam conjuntos específicos de declarações por meio de escopos: "profile" (nome, foto, localidade), "email" (email, email_verified), "address" (endereço formatado), "phone" (phone_number, phone_number_verified). A resposta do UserInfo é um objeto JSON ou JWT.
Validação do Token de ID: Assinatura
A validação do token de ID começa pela verificação da assinatura. O cliente busca o JWKS (conjunto de chaves JSON) do servidor de autorização no ponto de acesso conhecido, encontra a chave correspondente ao parâmetro "kid" (ID da chave) do cabeçalho do JWT e verifica a assinatura do JWT. Isso prova que o token foi emitido pelo servidor de autorização legítimo e não sofreu adulteração.
Validação das Declarações: iss, aud, exp
Após verificar a assinatura, o cliente deve validar o seguinte: "iss" deve corresponder exatamente à URL esperada do servidor de autorização (incluindo o esquema e o caminho). "aud" deve conter o próprio client_id do cliente. "exp" deve estar no futuro (tokens expirados devem ser rejeitados). "iat" deve ser razoavelmente recente. As quatro verificações são obrigatórias segundo a especificação do OIDC.
Nonce para Prevenção de Repetição
A declaração nonce impede ataques de repetição do token de ID. O cliente gera um nonce aleatório e o inclui na solicitação de autorização. O servidor de autorização incorpora o nonce ao token de ID. O cliente verifica se o nonce no token de ID corresponde ao que enviou. Isso impede que um atacante que capture um token de ID o repita para se autenticar em uma sessão diferente.
Vulnerabilidades do Token de ID no Fluxo Implícito
Quando o OIDC usa o fluxo implícito (response_type=id_token), o token de ID é retornado diretamente no fragmento da URL. O cliente deve validar at_hash (o hash do token de acesso) para associar o token de acesso ao token de ID. Sem a validação de at_hash, são possíveis ataques de substituição do token de acesso. Esse é outro motivo pelo qual o fluxo implícito foi descontinuado.
Escopos e Declarações do OIDC
O OIDC define mapeamentos padrão entre escopos e declarações. O escopo "openid" é obrigatório e retorna a declaração "sub". "profile" retorna name, given_name, family_name, nickname, picture, website, locale, zoneinfo, updated_at. "email" retorna email e email_verified. Solicitar escopos desnecessários viola o princípio da divulgação mínima e pode expor dados sensíveis do usuário.
Injeção de Declarações por Provedores Maliciosos
Ao implementar login do OIDC com vários provedores (por exemplo, "Entrar com Google" e "Entrar com GitHub"), são possíveis ataques de injeção de declarações. Se um atacante criar uma conta no Provedor B com o endereço de email de uma vítima que usa o Provedor A, poderá obter acesso se o aplicativo associar contas apenas pela declaração de email. Associe sempre as contas pela dupla (iss, sub), não somente pelo email.
Casos de Uso do Fluxo Híbrido
O fluxo híbrido do OIDC (response_type=code id_token) retorna um código de autorização e um token de ID do ponto de acesso de autorização. O token de ID permite a verificação imediata da identidade, enquanto o código é trocado por tokens por meio do canal de retaguarda. Ele é usado quando o cliente precisa renderizar imediatamente as informações do usuário antes de concluir a troca de tokens pelo canal de retaguarda.
Verificação das Declarações do Token de ID
Qual combinação de declarações uma parte confiável deve validar em um token de ID do OIDC?
Recapitulação da Lição: Declarações e Tokens de ID do OIDC
O OIDC adiciona um token de ID JWT assinado aos fluxos do OAuth 2.0. Valide a assinatura (JWKS), iss (correspondência exata), aud (client_id), exp (não expirado) e nonce (se enviado). O ponto de acesso UserInfo fornece declarações adicionais por meio de escopos. Associe as contas pela dupla (iss, sub), nunca somente pelo email, para impedir a injeção de declarações. O fluxo implícito foi descontinuado; use o código de autorização com PKCE para OIDC.
Perguntas Frequentes
A aula “Claims e Tokens de ID do OpenID Connect” é grátis?
Sim — o texto completo de “Claims e Tokens de ID do OpenID Connect” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.
O que vou aprender em “Claims e Tokens de ID do OpenID Connect”?
Decodifique tokens de ID baseados em JWT, compreenda a validação de claims e implemente OIDC corretamente. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cryptology Academy?
Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Claims e Tokens de ID do OpenID Connect”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cryptology Academy?
Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fluxos do OAuth 2.0 e Tipos de Tokens
- PKCE: Protegendo Clientes Públicos
- Claims e Tokens de ID do OpenID Connect
- Vulnerabilidades do OAuth e Padrões de Ataque