Skip to main content

Sessão e segurança do navegador

Depois da entrada, o Portal 2 identifica o navegador por uma sessão opaca. O cookie não carrega um access token para o JavaScript ler. O BFF usa esse identificador para recuperar a sessão e mantém os tokens necessários no servidor.

Essa separação reduz a exposição de tokens no navegador e permite que o BFF encerre ou rotacione uma sessão sem depender de dados gravados na interface.

Caminho de uma rota protegida

O authGuard só considera a sessão válida depois que o BFF responde à consulta. O permissionGuard consulta myPermissions e nega o acesso por padrão se não consegue carregar as permissões. Nenhum desses guards torna o frontend uma barreira de segurança: o BFF e os serviços de domínio devem validar o acesso à operação solicitada.

Cookies usados pelo fluxo de navegador

CookieLeituraEscopo e finalidadeProteções confirmadas
mm_sessionBFF; não é legível por JavaScript.Identifica a sessão opaca do navegador; Path=/.HttpOnly, expiração, rotação após autenticação e SameSite configurável. Os testes de navegador cobrem SameSite=Lax.
CSRFJavaScript e BFF, quando configurado.Prova adicional enviada no cabeçalho x-csrf-token nas mutações.O BFF compara a prova antes de executar a operação.

O atributo Secure é configurável por ambiente. Em produção, a aplicação deve servir o Portal por HTTPS e configurar cookies seguros. Não use a configuração de desenvolvimento como referência de produção.

O Portal não grava access token, refresh token ou token OAuth em localStorage, sessionStorage, IndexedDB ou na resposta de login. Na inicialização, ele remove o banco IndexedDB legado mm-auth. O navegador mantém somente uma URL interna de retorno em sessionStorage, um identificador de dispositivo em localStorage e o cookie de sessão, que o JavaScript não lê.

safeReturnUrl aceita apenas caminhos internos. Essa regra impede que um parâmetro de retorno transforme o login em um redirecionamento para outro domínio.

Proteções de requisição

ProteçãoOnde é aplicadaO que validaFalha esperada
SessãoBffAuthGuard e rotas protegidas.Presença e validade do cookie de sessão.401; o Portal encerra o estado local e volta à entrada.
OrigemRotas REST mutáveis e operações GraphQL.Origin ou Referer permitido; domínios customizados devem usar HTTPS e corresponder exatamente ao tenant.403.
CSRFBrowserCsrfGuard e mutations GraphQL.Cabeçalho x-csrf-token configurado.403 com prova CSRF inválida.
CORSAplicação BFF.Origens configuradas e envio de credenciais.O navegador bloqueia a chamada antes de disponibilizar a resposta à interface.
Rate limitEntrada, MFA e QR Code.Quantidade de tentativas na janela permitida.429.

O AuthSessionService envia withCredentials: true e x-csrf-token: 1 nas mutações de autenticação. O cliente Apollo segue a mesma política. O Portal não usa Authorization: Bearer como alternativa para chamadas GraphQL de navegador.

Permissões e recursos administrativos

Depois de restaurar a sessão, o Portal consulta permissões efetivas por tenant e unidade. A consulta também informa roleIds e se a pessoa é platformAdmin.

Guard do frontendFinalidade de experiênciaFonte de verdade no backend
authGuardRedireciona quem não tem sessão e preserva a rota interna.Cookie e sessão validados pelo BFF.
guestGuardEvita que uma pessoa autenticada volte à tela pública.Sessão atual.
permissionGuardOculta ou bloqueia navegação sem permissão.Serviço de permissões e regra do recurso.
platformAdminGuardProtege telas administrativas da plataforma.Claim e política platformAdmin.
mfaRequiredGuardEncaminha quem precisa configurar MFA.Estado da sessão e política de segurança.

Uma API administrativa, como o cadastro de cliente OAuth, exige Bearer válido e platformAdmin. Operações de usuários podem exigir user:write. Consulte a referência de clientes OAuth e a referência de usuários antes de chamar essas rotas.

Logout, expiração e revogação

Ao sair, o Portal chama POST /v1/auth/logout com cookie e prova CSRF. A operação é idempotente para a interface: se ela recebe 401 ou 204, limpa seu estado local da mesma forma.

Uma sessão pode expirar, ser revogada ou se tornar inválida depois de uma alteração de segurança. Quando uma chamada protegida retorna 401, o Portal limpa o usuário em memória e retorna à tela de entrada. O BFF também limpa o cookie quando não consegue mais autenticar a sessão.

Caminhos não felizes

SituaçãoEfeito no PortalComo agir
Cookie ausente, expirado ou revogadoA rota protegida retorna 401 e a pessoa é direcionada à entrada.Entre novamente.
Origin fora da lista permitidaO BFF retorna 403.Use o domínio oficial ou corrija a configuração do tenant.
Cabeçalho CSRF ausente ou incorretoA mutation retorna 403.Corrija o cliente; não desative a proteção.
Permissões não carregamO permissionGuard nega a rota.Verifique a sessão, o tenant e as permissões atribuídas.
Resposta GraphQL UNAUTHENTICATEDO Portal encerra a sessão local.Entre novamente e investigue a causa no BFF se o problema persistir.

Próximos passos

Leia Entrar pelo navegador para o fluxo que cria a sessão. Leia OAuth e OpenID Connect quando o consumidor não é o navegador do Portal.