Chrome 123 以降では、Federated Credentials Management API(FedCM)とともに ドメイン ヒントを使用できます。Domain Hint API を使用すると、デベロッパーは許可するドメインの連携ログイン アカウントのみを表示することで、ユーザー エクスペリエンスを向上させることができます。
Domain Hint API
FedCM を使用すると、ユーザーが ID プロバイダ(IdP)から提供されたアカウント情報を使用して、信頼できる当事者(RP、ウェブサイトを参照)に簡単にログインできます。ただし、特定のドメインに関連付けられたアカウントのみがサイトへのログインを許可されていることを RP がすでに把握している場合があります。これは、アクセス先のサイトが企業ドメインに限定されているエンタープライズ シナリオで特に一般的です。ユーザー エクスペリエンスを向上させるため、FedCM API では、RP へのログインに使用できるアカウントのみを RP に表示できます。これにより、ユーザーが企業ドメイン外のアカウントを使用して RP にログインしようとしたときに、適切なタイプのアカウントが使用されていないために、後でエラー メッセージが表示される(またはログインが機能しない場合、何も表示されない)というシナリオを防ぐことができます。
Domain Hint API を使用すると、RP は FedCM API 呼び出しで domainHint
プロパティを指定して、ユーザーに一致するアカウントのみを表示できます。IdP は、アカウント リスト エンドポイントからのレスポンスの一部として domain_hints
プロパティを提供して、アカウントが関連付けられているドメインを指定できます。これにより、ブラウザは、リクエストされたドメインヒントを IdP に開示することなく、一致するアカウントを表示できます。
アカウント リスト エンドポイントからの JSON レスポンスの例は次のとおりです。
{
"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"]
}]
}
RP は、domainHint
プロパティを指定して navigator.credentials.get()
を呼び出し、アカウントをフィルタできます。たとえば、ユーザーが corp-partner.example
にアクセスし、corp.example
のアカウントでログインしたとします。サイトは次のように API を呼び出します。
return await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/manifest.json",
clientId: "abc",
nonce: nonce,
domainHint : "corp.example"
}]
}
});
domainHint
値は、IdP への指紋ベクトルになる可能性があるため、サーバーサイド フィルタリング用のアカウント リスト エンドポイントには送信されません。代わりに、Chrome は通常どおり FedCM リクエストを実行し、navigator.credentials.get()
呼び出しで指定された domainHint
値と一致しないアカウントを除外します。その後、Chrome は新しいアカウントのリストとともに FedCM ダイアログをユーザーに表示します。このアプローチは Login Hint API に似ていますが、これらの 2 つの API は異なる質問に回答します。Login Hint API は「目的のユーザーの ID はどれか?」という質問に答えることを目的としていますが、Domain Hint は「このアカウントはどの企業またはサーバーに属している必要がありますか?」という質問に答えることを目的としています。
domainHint: "any"
を使用すると、ドメインがないアカウント(domain_hints
が渡されていないか空のアカウント)がフィルタされます。たとえば、RP が登録プロセスで管理対象アカウントのみを許可するユースケースが考えられます。
domainHint
に一致するアカウントがない場合、FedCM ダイアログにログイン プロンプトが表示されます。これにより、ユーザーは RP からリクエストされたヒントに一致する IdP アカウントにログインできます。ユーザーがプロンプトをタップすると、構成ファイルで指定されたログイン URL を含むポップアップ ウィンドウが開きます。リンクには、ログイン ヒントとドメイン ヒントのクエリ パラメータが追加されます。

domainHint
に一致するアカウントがない場合に表示されるログイン プロンプトの例。