Autenticação sem Interação com o Usuário
É possível pedir a autenticação de determinado usuário ao informar um id_token previamente emitido. Para tal, é necessário adicionar dois pares key/value na Query string da solicitação (capítulo 4).
Parâmetros Necessários
id_token_hint
Deve conter o JWT que representa algum id_token previamente emitido.
&id_token_hint=<jwt_token>prompt
Deve possuir o valor none.
&prompt=noneExemplo de Requisição
{login-producao}/authorize?response_type=code&scope=openid profile&client_id=exampleclient&redirect_uri=https://exemplo.com.br/callback&id_token_hint=qbcd.1234.xyz&prompt=noneComportamento
Caso de Sucesso
Caso o usuário referido pela solicitação de autenticação possua sessão ativa, a mesma ocorrerá de forma automática. O usuário será redirecionado para a redirect_uri com o código de autorização, sem necessidade de interação.
Caso de Falha
Caso o usuário não possua sessão ativa, possua sessão expirada ou a sessão ativa não pertença ao usuário referido, o user_agent (navegador do usuário) será redirecionado para o URI de redirecionamento informada na solicitação de autenticação, com os parâmetros informativos relativos ao erro observado.
Erro Específico
Se você usar id_token_hint sem definir prompt=none, receberá o seguinte erro:
error: "invalid_request"
error_description: "The use of the id_token_hint property requires the prompt value to be set as 'none'."Casos de Uso
Esta funcionalidade é útil para:
- Verificar se o usuário ainda possui sessão ativa
- Renovar tokens sem solicitar login novamente
- Implementar "lembrar-me" ou sessões persistentes
- Melhorar a experiência do usuário evitando logins repetidos
Exemplo de Implementação
function verificarSessaoAtiva(idTokenAnterior) {
const authUrl = `{login-producao}/authorize?response_type=code&scope=openid profile&client_id=exampleclient&redirect_uri=https://exemplo.com.br/callback&id_token_hint=${idTokenAnterior}&prompt=none`;
window.location.href = authUrl;
}No callback, você deve verificar se recebeu um código (sucesso) ou um erro (sessão não ativa).
