FedCM の更新: Disconnect API と 2 つの更新

Chrome 122 以降、連携認証情報用の Disconnect API Management API(FedCM)を利用できます。「 Disconnect API を使用すると、リライング パーティがユーザーをネットワークから切断できます。 ID プロバイダのアカウントを保護できます。また、 FedCM の同一サイト処理に対する更新がいくつか加えられました。

API の切断

ユーザーが証明書利用者(RP、つまり 使用すると、ID 連携によって ID プロバイダを認証できます。 IdP(認証情報とアカウント情報を提供するサービス) 第三者への通信など)によって、サーバーに接続が記録されるのが一般的です。保存された 接続により、IdP はユーザーがログインしている RP を追跡し、 エクスペリエンスを最適化できますたとえば、Google Chat で ユーザーが後で RP に戻った場合、IdP を持つユーザー アカウントは できます。このアカウントでは、自動再認証や 使用しているアカウントを示すパーソナライズされたボタン

IdP は、アカウントを RP から接続解除するための API を提供することがあります。ただし、 接続が認証され、IdP Cookie が必要です。世界で ユーザーが RP にアクセスしたときに、ブラウザは存在せず RP が IdP から接続解除するための API。IdP は複数存在する可能性があるため、 同じ IdP のアカウントが特定の RP にリンクされている場合、切断フローで 切断されたアカウントの情報を確認できます。

切断 API ユーザーがブラウザで RP から IdP アカウントを解除することもできます。 指定したエンドポイントにシグナリングすることで、IdP サーバーと同じように通信できます。ユーザーのニーズ フェデレーション認証情報を使用して ID 連携を Management API(FedCM)です。接続が解除されたユーザーは、新規 ユーザーが次回 IdP を使用して RP にログインしようとしたときに、この警告が発音されます。

RP から IdP を切断する

ユーザーが以前に FedCM から IdP を使用して RP にログインしたことがある場合は、 ブラウザによってローカルに記憶され、 できます。RP は、 IdentityCredential.disconnect() 関数を使用します。この関数は 使用しないでください。RP は、configURL(使用する clientId)を渡す必要があります。 IdP の IP アドレス、IdP の接続を解除するための accountHint です。アカウント ヒントには、切断エンドポイントが識別できる任意の文字列にできます メールアドレスやユーザー ID などは必須ではないが、 アカウント リスト エンドポイントから提供されたアカウント ID と一致する必要があります。

// Disconnect an IdP account "account456" from the RP "https://idp.com/". This is invoked on the RP domain.
IdentityCredential.disconnect({
  configURL: "https://idp.com/config.json",
  clientId: "rp123",
  accountHint: "account456"
});

IdentityCredential.disconnect()Promise を返します。この Promise により 次の理由により例外となります。

  • ユーザーが FedCM の IdP を使用して RP にログインしていない。
  • API は、FedCM 権限ポリシーのない iframe 内から呼び出されます。
  • configURL が無効か、切断エンドポイントがありません。
  • コンテンツ セキュリティ ポリシー(CSP)のチェックに失敗する
  • 保留中の接続解除リクエストがあります。
  • ユーザーがブラウザの設定で FedCM を無効にしている。

IdP の切断エンドポイントが レスポンスが完了すると、RP と IdP はネットワークで切断されます。 Promise が解決されます。切断されたユーザー アカウントは、 (接続解除からのレスポンスで指定) 提供します

IdP 構成ファイルの設定

Disconnect API をサポートするには、IdP で接続解除をサポートする必要があります。 エンドポイントの IdP で disconnect_endpoint プロパティとそのパスを指定します。 構成します。

{
  "accounts_endpoint": "/accounts",
  "id_assertion_endpoint": "/assertion",
  ...
  "disconnect_endpoint: "/disconnect"
}

切断エンドポイントでアカウントの接続を解除する

IdentityCredential.disconnect() を呼び出すと、ブラウザはクロスオリジン Cookie とコンテンツ タイプを含む POST リクエスト application/x-www-form-urlencoded をこの切断エンドポイント( 次の情報を参照してください。

プロパティ 説明
account_hint IdP アカウントのヒント。
client_id RP のクライアント ID。
POST /disconnect HTTP/1.1
Host: idp.example
Origin: rp.example
Content-Type: application/x-www-form-urlencoded
Cookie: 0x123
Sec-Fetch-Dest: webidentity

account_hint=account456&client_id=rp123

リクエストを受信すると、IdP サーバーは次の処理を行う必要があります。

  1. CORS(クロスオリジン リソース)を使用してリクエストに応答する 共有)をご覧ください。
  2. リクエストに Sec-Fetch-Dest: webidentity HTTP ヘッダーが含まれていることを確認します。
  3. Origin ヘッダーを client_id によって決定される RP オリジンと照合します。 一致しない場合は拒否します。
  4. account_hint に一致するアカウントを見つけます。
  5. RP の接続済みアカウントのリストからユーザー アカウントを接続解除します。
  6. 特定されたユーザーの account_id を JSON 形式で使用してブラウザに応答する 使用できます。
で確認できます。

レスポンスの JSON ペイロードの例を次に示します。

{
  "account_id": "account456"
}

IdP が、ブラウザに関連付けられているすべてのアカウントの接続を アカウント ID と一致しない文字列("*" など)を渡します。

RP と IdP が同じサイトである場合、/.well-known/web-identity の確認がスキップされるようになりました

FedCM システムを開発する場合、RP サーバー ドメインのテストまたはステージングは 同じサブドメインを使用しません。たとえば、本番環境の IdP サーバーが idp.example にあり、ステージング RP サーバーとステージング IdP サーバーの両方がある staging.idp.example にいます。ただし、well-known ファイルを置く必要があり、 を IdP サーバーの eTLD+1 のルートに置く場合は、 idp.example/.well-known/web-identity は本番環境サーバーです。以降 デベロッパーが本番環境のインフラストラクチャにファイルを ため、FedCM をテストできません。

Chrome 122 以降、RP ドメインと IdP ドメインが同じ場合、Chrome 既知のファイルのチェックをスキップします。これによりデベロッパーは 可能性があります。

サブリソースで同じサイトのログイン ステータスを設定可能に

これまで Chrome では、ログイン ステータス( (例: Set-Login: logged-in ヘッダーを使用)。リクエストが 同一オリジン 同じですこれにより、 同一サイト fetch() は、ログイン ステータスの設定をリクエストします。

たとえば、ユーザーがユーザー名を入力し、 idp.example のパスワードは更新されていませんが、認証情報は login.idp.example に送信されます fetch() と一緒に使用できます。Login Status を使用してブラウザにログイン ステータスを記録する 2 つのドメインがクロスオリジンで同一サイトのため、API にアクセスできませんでした。

この変更により、Login Status API の要件が緩和され、 同じサイト すべての上位エンティティとの親和性があり、上記の例では、 HTTP ヘッダー(Set-Login: logged-in)を使用した login.idp.example さんのログイン ステータス。

概要

Disconnect API を使用することで、FedCM は IdP から RP を接続解除できるようになりました。 サードパーティ Cookie に依存しませんこれを行うには、 RP の IdentityCredential.disconnect()。この関数を使用すると、ブラウザは IdP の切断エンドポイントにリクエストを送信し、IdP が接続を終了できるようにします。 サーバーで接続し、次にブラウザで行います。

RP で /.well-known/web-identity のチェックがスキップされることを発表しました。 テスト用です。また、ログインの設定 同一サイト IdP サブリソースからの HTTP レスポンス ヘッダーを介してステータスを 考えています