No Chrome 123, você pode usar as dicas de domínio junto com a API Federated Credential Management (FedCM). Com a API Domain Hint, os desenvolvedores podem oferecer uma melhor experiência do usuário apenas mostrando as contas de login federadas do domínio que elas aceitam.
API Domain Hint
O FedCM pode ser usado para facilitar o login de um usuário para uma parte confiável (RP, referindo-se a um site) usando informações da conta fornecidas por uma identidade provedor de identidade (IdP). No entanto, há casos em que a parte restrita já sabe que apenas contas associadas a um determinado domínio têm permissão para fazer login no site. Isso é particularmente comum em cenários corporativos em que o site que está sendo acessado é restritos a um domínio corporativo. Para proporcionar uma melhor experiência ao usuário, o FedCM A API permite que a parte restrita mostre apenas as contas que podem ser usadas para fazer login no parte restrita. Isso evita cenários em que um usuário tenta fazer login na parte restrita usando um conta fora do domínio corporativo, apenas para ser veiculada com uma mensagem de erro mais tarde (ou silenciar onde o login não funcionou) porque o tipo certo de não foi usada.
Com a API Domain Hint, os RPs podem especificar uma propriedade domainHint
em uma API FedCM
chamada para mostrar apenas as contas correspondentes para o usuário. O IdP pode fornecer um
domain_hints
como parte de uma resposta da lista de contas
endpoint 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
IdP.
Um exemplo de resposta JSON do ponto de extremidade da lista de contas seria semelhante ao seguinte:
{
"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"]
}]
}
A parte restrita pode chamar navigator.credentials.get()
com uma propriedade domainHint
para
filtrar as contas. Por exemplo, digamos que um usuário visite corp-partner.example
e
faz login com uma conta do corp.example
. O site invocaria a API como
da seguinte forma:
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 a lista de contas
endpoint
para filtragem do lado do servidor, já que pode ser um vetor de impressão digital para o IdP.
Em vez disso, o Chrome realiza uma solicitação do FedCM como de costume e filtra as contas
que não correspondem ao valor domainHint
especificado pelo
navigator.credentials.get()
. Depois, o Chrome mostra a caixa de diálogo do FedCM ao
usuário com a nova lista de contas. Essa abordagem é semelhante à dica de login
API, mas esses dois
As APIs respondem a perguntas diferentes. A API Login Hint tem como objetivo responder à pergunta:
identificador para o usuário que eu quero?", enquanto a dica de domínio busca responder "qual
corporação ou servidor a essa conta deve pertencer?".
Quando domainHint: "any"
é usado, o Chrome filtra as contas que não têm
qualquer domínio (ou seja, domain_hints
não é transmitido ou está vazio). Por exemplo:
Isso permite casos de uso em que a parte restrita permite apenas contas gerenciadas na inscrição
de desenvolvimento de software.
Quando nenhuma conta corresponde a domainHint
, a caixa de diálogo do FedCM mostra uma solicitação de login.
que permite que o usuário faça login em uma conta do IdP correspondente à dica solicitada pelo
parte restrita. Quando o usuário toca na solicitação, uma janela pop-up é aberta com o
URL de login especificado nas configurações
arquivo. O link é
em seguida, anexado com a dica de login e os parâmetros de consulta de dica de domínio.
![Exemplo de solicitação de login quando nenhuma conta corresponde a "domainHint".](https://developers-dot-devsite-v2-prod.appspot.com/static/privacy-sandbox/assets/images/blog/fedcm-123.jpg?authuser=0000&hl=pt-br)
domainHint
.