No Chrome 123, você pode usar as Dicas de domínio com a API Federated Credential Management (FedCM). Com a API Domain Hint, os desenvolvedores podem oferecer uma experiência melhor ao usuário mostrando apenas as contas de login federadas do domínio que ele aceita.
API Domain Hint
O FedCM pode ser usado para facilitar o login de um usuário em uma parte confiável (RP, referente a um site) usando informações da conta fornecidas por um provedor de identidade (IDP). No entanto, há casos em que o RP já sabe que apenas contas associadas a um determinado domínio podem fazer login no site. Isso é particularmente comum em cenários corporativos em que o site acessado é restringido a um domínio corporativo. Para oferecer uma melhor experiência do usuário, a API FedCM permite que o RP mostre apenas as contas que podem ser usadas para fazer login no RP. Isso evita cenários em que um usuário tenta fazer login no RP usando uma conta fora do domínio corporativo, apenas para receber uma mensagem de erro mais tarde (ou silêncio, quando o login não funciona) porque o tipo correto de conta não foi usado.
Com a API Domain Hint, os RPs podem especificar uma propriedade domainHint
em uma chamada da API FedCM
para mostrar apenas contas correspondentes ao usuário. O IdP pode fornecer uma
propriedade domain_hints
como parte de uma resposta do endpoint da lista de
contas para
indicar com quais domínios uma conta está associada. Dessa forma, o navegador
pode mostrar as contas correspondentes sem divulgar a dica de domínio solicitada para
o IdP.
Um exemplo de resposta JSON do endpoint da lista de contas é este:
{
"accounts": [{
"id": "1234",
"given_name": "John",
"name": "John Doe",
"email": "john_doe@idp.example",
"picture": "https://idp.example/profile/123",
"approved_clients": ["123", "456", "789"],
}, {
"id": "5678",
"given_name": "Johnny",
"name": "Johnny",
"email": "johnny@idp.example",
"picture": "https://idp.example/profile/456"
"approved_clients": ["abc", "def", "ghi"],
"domain_hints": ["corp.example"]
}]
}
O RP pode chamar navigator.credentials.get()
com uma propriedade domainHint
para
filtrar as contas. Por exemplo, digamos que um usuário acesse corp-partner.example
e
faça login com uma conta de corp.example
. O site invocaria a API da seguinte maneira:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/manifest.json",
clientId: "abc",
nonce: nonce,
domainHint : "corp.example"
}]
}
});
O valor domainHint
não é enviado para o endpoint da lista de contas
para filtragem do lado do servidor, porque isso pode ser um vetor de impressão digital para o IdP.
Em vez disso, o Chrome executa uma solicitação FedCM como de costume e filtra as contas
que não correspondem ao valor domainHint
especificado pela
chamada navigator.credentials.get()
. Em seguida, o Chrome mostra a caixa de diálogo FedCM para o
usuário com a lista de novas contas. Essa abordagem é semelhante à API Login Hint, mas essas duas
APIs respondem a perguntas diferentes. A API Login Hint tem como objetivo responder "qual é o
identificador do usuário que eu quero?", enquanto a Domain Hint tem como objetivo responder "a qual
corporação ou servidor essa conta precisa pertencer?".
Quando domainHint: "any"
é usado, o Chrome filtra as contas que não têm
nenhum domínio (ou seja, domain_hints
não é transmitido ou está vazio). Por exemplo,
isso permite casos de uso em que o RP só permite contas gerenciadas no processo
de inscrição.
Quando nenhuma conta corresponde ao domainHint
, a caixa de diálogo FedCM mostra um prompt de login,
que permite que o usuário faça login em uma conta de IdP que corresponda à dica solicitada pelo
RP. Quando o usuário toca no comando, uma janela pop-up é aberta com o
URL de login especificado no arquivo
de configuração. O link é anexado com a sugestão de login e os parâmetros de consulta de sugestão de domínio.

domainHint
.