Pular para o conteúdo principal

Sessões

As sessões no Logto definem como o estado de autenticação é criado, compartilhado, atualizado e revogado entre aplicativos, navegadores e dispositivos.

Na prática, os usuários experimentam "logado" como um estado único, mas o estado do sistema é dividido em várias camadas. Compreender essas camadas é a chave para projetar comportamentos previsíveis de SSO, renovação de tokens e logout.

Modelo de sessão no Logto

  • Sessão de login do Logto: Estado de login centralizado armazenado como cookies de domínio Logto. Isso controla a disponibilidade de SSO no contexto do navegador atual.
  • Concessão (Grant): Estado de autorização específico do aplicativo para usuário + aplicativo cliente. As concessões são a ponte entre o login centralizado e a emissão de tokens do aplicativo.
  • Sessão/tokens locais do aplicativo: Estado de autenticação local em cada aplicativo (tokens de ID/acesso/atualização, cookie de sessão do aplicativo, etc.).

Conceitos principais

O que é uma sessão do Logto?

Uma sessão do Logto é o estado de autenticação centralizado criado após um login bem-sucedido. Se ainda for válida, o Logto pode autenticar usuários silenciosamente para outros aplicativos no mesmo locatário. Se não existir, os usuários devem fazer login novamente.

O que são concessões?

Uma concessão é um estado de autorização em nível de aplicativo vinculado a um usuário específico e aplicativo cliente.

  • Uma sessão do Logto pode ter concessões para vários aplicativos.
  • Tokens para um aplicativo são emitidos sob a concessão desse aplicativo.
  • Revogar uma concessão afeta a capacidade desse aplicativo de continuar o acesso baseado em token.

Como sessão, concessões e estado de autenticação do aplicativo se relacionam

  • Sessão responde: "Este navegador pode fazer SSO com o Logto agora?"
  • Concessão responde: "Este usuário está autorizado para este aplicativo cliente?"
  • Sessão local do aplicativo responde: "Este aplicativo atualmente trata o usuário como logado?"

Criação de login e sessão

Topologia de sessão entre aplicativos e dispositivos

Mesmo navegador: sessão Logto compartilhada

Aplicativos no mesmo navegador podem compartilhar o estado de sessão centralizado do Logto, para que o SSO possa ocorrer sem a necessidade de inserir credenciais repetidamente.

Navegadores ou dispositivos diferentes: sessões Logto isoladas

Cada navegador/dispositivo possui armazenamento de cookies separado. Uma sessão válida no Dispositivo A não implica uma sessão válida no Dispositivo B.

Ciclo de vida da sessão

1. Criar

Após a autenticação do usuário, o Logto cria uma sessão centralizada e uma concessão específica do aplicativo.

2. Reutilizar (SSO)

Enquanto os cookies de sessão forem válidos no mesmo navegador, novas solicitações de autorização podem frequentemente ser concluídas silenciosamente.

3. Renovar tokens

O acesso ao aplicativo geralmente continua através de fluxos de atualização de tokens (quando habilitado). Isso é continuidade em nível de aplicativo, separado de se a sessão centralizada do Logto ainda existe.

4. Revogar/expirar

A revogação pode ocorrer em diferentes camadas:

  • Logout local do aplicativo remove tokens/sessão local do aplicativo.
  • Encerrar sessão remove a sessão centralizada do Logto.
  • Revogação de concessão remove a continuidade de autorização em nível de aplicativo.

Recomendações de design

  • Mantenha o tratamento de sessão local do aplicativo explícito no código do seu aplicativo.
  • Trate a sessão do Logto, concessões e sessão local do aplicativo como camadas separadas.
  • Escolha se o logout deve ser apenas local do aplicativo ou global.
  • Use logout de back-channel quando a consistência entre múltiplos aplicativos for necessária.
  • Para detalhes sobre comportamento e implementação de logout, veja Logout.

Melhores práticas para revogar acesso

Use diferentes estratégias de revogação com base no seu objetivo:

  • Revogar acesso dos seus aplicativos de primeira parte: Revogue a sessão alvo com revokeGrantsTarget=firstParty. Isso desconecta o usuário em aplicativos de primeira parte associados a essa sessão, criando uma experiência de logout consistente. Ao mesmo tempo, concessões para aplicativos de terceiros que têm offline_access concedido podem permanecer disponíveis para integrações contínuas. Veja Gerenciar sessões de usuário para detalhes sobre revogação de sessão.

  • Revogar acesso a aplicativos de terceiros: Escolha uma das seguintes opções:

    • Revogue a sessão com revokeGrantsTarget=all para revogar todas as concessões associadas a essa sessão.
    • Revogue concessões específicas diretamente através das APIs de gerenciamento de concessões para remover autorizações de aplicativos de terceiros sem forçar o logout completo da sessão. Veja Gerenciar aplicativos autorizados do usuário (concessões) para estratégias de revogação específicas de concessões.
  • Ao usar o Logto Console: Na página de detalhes do usuário, o Logto fornece tanto o gerenciamento de sessões quanto o gerenciamento de aplicativos de terceiros autorizados prontos para uso.

    • Revogar uma sessão também revoga concessões de aplicativos de primeira parte, para manter o comportamento de logout de primeira parte consistente.
    • Revogar uma autorização de aplicativo de terceiros revoga concessões para esse aplicativo de terceiros enquanto mantém o status original da sessão inalterado.
Gerenciar sessões de usuário

Gerenciar aplicativos autorizados do usuário (concessões)

Configuração de sessão Logout Cadastro e login

Compreender o fluxo de autenticação