FedCM の更新: Domain Hint API

Chrome 123 以降では、ドメインヒントFederated Credential Management API(FedCM)。あり ユーザー エクスペリエンスを向上させるには、 受け入れたドメインのフェデレーション ログイン アカウントを示す図

Domain Hint API

FedCM を使用すると、ユーザーが証明書利用者(RP、 ウェブサイトなど)にアクセスするため、ユーザーから提供されたアカウント情報を使用して、 構成されます。ただし、すでに RP が サイトへのログインを特定のドメインと関連付けられたアカウントに限定する。この 企業のシナリオで特によく見られます 企業ドメインに限定されます。ユーザー エクスペリエンスを向上させるため、FedCM は API により、RP はログインに使用できるアカウントのみを RP。これにより、ユーザーが 企業ドメイン外のアカウントについては、エラー メッセージのみが表示される (ログインがうまくいかなかった部分を消音にする)という方法があります。 アカウントは使用されませんでした。

Domain Hint API を使用すると、RP は FedCM API の domainHint プロパティを指定できます。 呼び出して、ユーザーに一致するアカウントのみを表示します。IdP は Google Cloud の アカウント リストからのレスポンスの一部として使用される domain_hints プロパティ エンドポイント)を アカウントがどのドメインに関連付けられているかを示します。これにより、ブラウザは リクエストされたドメインヒントを開示することなく、一致するアカウントを 設定します。

アカウント リストのエンドポイントからの 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 リクエストを実行し、アカウントを除外 domainHint 値と一致しない場合に navigator.credentials.get() の呼び出し。その後、Chrome は FedCM ダイアログを ユーザーを追加します。この方法は、ログインのヒントと同様です。 API ですが、これら 2 つは API はさまざまな問いに答えますLogin Hint API は、 であるのに対し、Domain Hints は「 「企業またはサーバーは、このアカウントが属する必要がある」 という質問です

domainHint: "any" を使用すると、Chrome で (つまり、domain_hints が渡されないか空になります)。たとえば これにより、登録時に管理対象アカウントのみが RP で許可されるユースケースが可能になります。 プロセスです

domainHint に一致するアカウントがない場合、FedCM ダイアログにログイン プロンプトが表示されます。 これにより、ユーザーは、によって要求されたヒントに一致する IdP アカウントにログインできます。 表示されます。ユーザーがプロンプトをタップすると、ポップアップ ウィンドウが開いて config で指定されたログイン URL 。リンク: ログインヒントとドメインヒントのクエリ パラメータが追加されます。

<ph type="x-smartling-placeholder">
</ph> domainHint に一致するアカウントがない場合のログイン プロンプトの例。
domainHint に一致するアカウントがない場合のログイン プロンプトの例