Skip to content

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=none

Exemplo 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=none

Comportamento

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

javascript
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).

Documentação da API Fanbase