Suporte à reautenticação automática no FedCM

O Chrome oferece suporte à reautorização automática no FedCM

A API Federated Credential Management (FedCM) é uma API da Web para federação de identidade que preserva a privacidade. Com a federação de identidade, uma parte confiável (RP) depende de um provedor de identidade (IdP) para fornecer ao usuário uma conta sem exigir um novo nome de usuário e senha.

O FedCM permite que o navegador entenda o contexto em que o RP e o IdP trocam informações. Ele informa o usuário sobre as informações e os níveis de privilégio que estão sendo compartilhados e evita abusos não intencionais. O FedCM está disponível no Chrome desde a versão 108.

No Chrome 115, o FedCM está recebendo suporte para a reautorização automática, o que melhora a experiência do usuário e permite uma reautorização mais simplificada para o RP após o consentimento inicial.

Reautenticação automática

No momento, depois que um usuário cria uma conta federada em um RP com um provedor de identidade pela API FedCM, na próxima vez que ele visitar o site, será necessário seguir as mesmas etapas na interface do usuário. Isso significa que o usuário vai precisar confirmar novamente de forma explícita e manual para fazer a autenticação novamente e prosseguir com o fluxo de login.

Embora a experiência explícita do usuário faça sentido antes que o usuário tenha criado a conta federada para evitar o rastreamento (que é uma das principais metas do FedCM), ela é desnecessária depois que o usuário passou por ela uma vez: depois que o usuário concede permissão para permitir a comunicação entre o RP e o IdP, não há benefício de privacidade ou segurança para aplicar outra confirmação explícita do usuário para algo que ele já tenha reconhecido anteriormente. Por isso, estamos lançando uma UX mais simplificada que os RPs podem escolher para os usuários recorrentes.

A reautenticação automática do FedCM ("auto-reauthn" em resumo) permite que os usuários se autentiquem automaticamente quando voltarem após a autenticação inicial usando o FedCM. "A autenticação inicial" significa que o usuário cria uma conta ou faz login no site do RP tocando no botão Continuar como... na caixa de diálogo de login do FedCM pela primeira vez na mesma instância do navegador.

Uma caixa de diálogo que o usuário toca para criar uma conta ou fazer a autenticação.
Uma caixa de diálogo em que o usuário toca para criar uma conta ou autenticar.

Escolher uma opção de reautorização automática

Embora a reautorização automática esteja sendo lançada para oferecer uma melhor UX e se alinhar à especificação, a experiência do usuário padrão será diferente sem nenhuma mudança no código. Com a reautorização automática disponível, o navegador muda o comportamento dependendo da opção selecionada na opção mediation que os desenvolvedores fornecem com navigator.credentials.get().

const cred = await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/fedcm.json",
      clientId: "1234",
    }],
  },
  mediation: 'optional', // this is the default
});

O mediation é uma propriedade na API Credential Management. Ele se comporta da mesma forma que PasswordCredential e FederatedCredential, e também tem suporte parcial do PublicKeyCredential. A propriedade aceita os quatro valores a seguir:

  • 'required': sempre requer uma mediação para continuar, por exemplo, clicando no botão "Continuar" na interface. Escolha essa opção se os usuários precisarem conceder a permissão explicitamente sempre que precisarem ser autenticados.
  • 'optional'(padrão): reautorização automática, se possível, ou requer mediação, se não for. Recomendamos escolher essa opção na página de login.
  • 'silent': reautorização automática, se possível, ou falha silenciosa sem exigir uma mediação, se não for possível. Recomendamos escolher essa opção nas páginas que não são de login, mas em que você quer manter os usuários conectados, como uma página de item em um site de frete ou uma página de artigo em um site de notícias.
  • 'conditional': usado para WebAuthn e não disponível para FedCM no momento.

Com essa chamada, a reautorização automática ocorre nas seguintes condições:

  • O FedCM está disponível para uso. Por exemplo, o usuário não desativou a FedCM globalmente ou para o RP nas configurações.
  • O usuário usou apenas uma conta com a API FedCM para fazer login no site nesse navegador.
  • O usuário fez login no IdP com essa conta.
  • A reautorização automática não aconteceu nos últimos 10 minutos.
  • O RP não chamou navigator.credentials.preventSilentAccess() após a entrada anterior.

Quando as condições acima são atendidas, uma tentativa de autenticação automática do usuário é iniciada assim que o navigator.credentials.get() do FedCM é invocado.

Um usuário que está sendo autenticado automaticamente pelo FedCM.

Aplicar a mediação com preventSilentAccess()

A autenticação automática de usuários imediatamente após a saída não seria uma experiência muito boa para o usuário. É por isso que o FedCM tem um período de espera de 10 minutos após uma reautorização automática para evitar esse comportamento. Isso significa que a reautorização automática acontece no máximo uma vez a cada 10 minutos, a menos que o usuário faça login novamente em até 10 minutos. O RP precisa chamar navigator.credentials.preventSilentAccess() para solicitar explicitamente que o navegador desative a reautorização automática quando um usuário sair explicitamente do RP, por exemplo, clicando em um botão de desativação.

function signout() {
  navigator.credentials.preventSilentAccess();
  location.href = '/signout';
}

Os usuários podem desativar a reautorização automática nas configurações

Os usuários podem desativar a reautorização automática no menu de configurações:

  • No Chrome para computador, acesse chrome://password-manager/settings > Fazer login automaticamente.
  • No Android Chrome, abra Configurações > Gerenciador de senhas > toque na engrenagem no canto superior direito > Fazer login automaticamente.

Ao desativar a alternância, o usuário pode desativar o comportamento de reautorização automática por completo. Essa configuração é armazenada e sincronizada entre dispositivos se o usuário estiver conectado a uma Conta do Google na instância do Chrome e a sincronização estiver ativada.

Compartilhar feedback

Se você estiver testando o FedCM, compartilhe seu feedback ou os problemas encontrados em crbug.com em um componente "Blink>Identity>FedCM".

Foto de Noah Samuel Franz no Unsplash