O Chrome oferece suporte à reautenticação automática na FedCM
A API Federated Credential Management (FedCM) é uma API da Web para a federação de identidade que preserva a privacidade. Com a federação de identidade, uma parte confiável (RP) depende de um IdP (provedor de identidade) para fornecer ao usuário uma conta sem exigir um novo nome de usuário e senha.
A FedCM permite que o navegador entenda o contexto em que a 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, a FedCM está recebendo suporte para a reautenticação automática, o que melhora a experiência do usuário e permite uma reautenticação mais simplificada para a RP após o consentimento inicial.
Reautenticação automática
Atualmente, depois que um usuário tiver criado uma conta federada em uma parte restrita com um IdP por meio da API FedCM, na próxima vez que ele acessar o site, precisará seguir as mesmas etapas na interface do usuário. Isso significa que o usuário precisará confirmar de novo de maneira explícita e manual para se autenticar novamente e continuar com o fluxo de login.
Embora a experiência explícita do usuário faça sentido antes de o usuário criar a conta federada para evitar o rastreamento (que é um dos principais objetivos da FedCM), ela é desnecessariamente complicada depois que o usuário passa por ela uma vez: depois que o usuário concede permissão para permitir a comunicação entre a parte restrita e o IdP, não há um benefício de privacidade ou segurança ao aplicar outra confirmação explícita do usuário para algo que ele já tenha confirmado anteriormente. É por isso que estamos lançando uma UX mais simplificada que os RPs podem escolher para os usuários recorrentes.
A reautenticação automática (abreviada como "reautenticação automática") pode permitir que os usuários se autentiquem novamente de maneira automática quando retornam após a autenticação inicial usando a FedCM. Nesse caso, "a autenticação inicial" significa que o usuário cria uma conta ou faz login no site da parte restrita tocando no botão Continuar como... na caixa de diálogo de login da FedCM pela primeira vez na mesma instância do navegador.
![Uma caixa de diálogo em que o usuário toca para criar uma conta ou fazer a autenticação.](https://developers-dot-devsite-v2-prod.appspot.com/static/privacy-sandbox/assets/images/blog/a-dialog-user-taps-to-c-c86e154d4a899.png?authuser=5&hl=pt-br)
Escolha uma opção para a reautenticação automática
Estamos introduzindo a reautenticação automática para oferecer uma UX melhor e se alinhar à
especificação, mas a experiência do usuário padrão será diferente sem nenhuma mudança no
código. Com a reautenticação automática disponível, o navegador muda de comportamento dependendo
da opção selecionada na opção mediation
fornecida pelos desenvolvedores 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,
se comporta da mesma
maneira que
PasswordCredential
e
FederatedCredential
e também é parcialmente compatível com
PublicKeyCredential. A propriedade aceita os quatro valores a seguir:
'required'
: sempre exige uma mediação para prosseguir, por exemplo, clicando no botão "Continuar" na interface. Escolha essa opção se seus usuários precisarem conceder permissão explicitamente sempre que precisarem ser autenticados.'optional'
(padrão): reautenticação automática se possível. Caso contrário, exige uma mediação. Recomendamos escolher essa opção na página de login.'silent'
: reautenticação automática, se possível, e falha silenciosamente, sem precisar de uma mediação. Recomendamos escolher essa opção em outras páginas além da página de login dedicada, mas em que você quer manter os usuários conectados. Por exemplo, uma página de item em um site de frete ou 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 reautenticação automática acontece nas seguintes condições:
- O FedCM está disponível para uso. Por exemplo, o usuário não desativou o FedCM globalmente nem para a RP nas configurações.
- O usuário utilizou 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 reautenticação automática não aconteceu nos últimos 10 minutos.
- A RP não chamou
navigator.credentials.preventSilentAccess()
após o login anterior.
Quando as condições acima são atendidas, uma tentativa de reautenticar automaticamente
o usuário é iniciada assim que o navigator.credentials.get()
do FedCM é invocado.
Aplicar mediação com preventSilentAccess()
A reautenticação automática de usuários imediatamente após o logout não criaria uma experiência muito boa. É por isso que a FedCM tem um período de silêncio de 10 minutos após uma reautenticação automática para evitar esse comportamento. Isso significa que a reautenticação automática acontece no máximo uma vez a cada 10 minutos, a menos que o usuário faça login novamente em 10 minutos. A RP precisa chamar navigator.credentials.preventSilentAccess() para solicitar explicitamente que o navegador desative a reautenticação automática quando um usuário sai da RP explicitamente, por exemplo, clicando em um botão de logout.
function signout() {
navigator.credentials.preventSilentAccess();
location.href = '/signout';
}
Os usuários podem desativar a reautenticação automática nas configurações
Os usuários podem desativar a reautenticaçã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 em uma engrenagem no canto superior direito > Login automático.
Ao desativar a opção, o usuário pode desativar o comportamento de reautenticação automática de maneira completa. Essa configuração é armazenada e sincronizada em todos os dispositivos se o usuário tiver feito login em 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 qualquer problema encontrado em crbug.com em um componente "Blink>Identity>FedCM".
Foto por Noah Samuel Franz no Unsplash