このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

連合資格情報管理 (FedCM) API

利用可能性は限定的

この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。

Want more browser support for this feature? Tell us why.

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

連合資格情報管理 API(または FedCM API)は、アイデンティティプロバイダー (IdP) に標準的な仕組みを提供し、サードパーティクッキーやリダイレクトを必要とせずに、プライバシーを保護した形でウェブ上でアカウント連携サービスを提供するための標準的な仕組みを提供します。これには、ウェブサイトへのログインやサインアップなどの操作において、連合認証を利用することができる JavaScript API が含まれています。

FedCM の概要

アイデンティティ連合とは、e コマースサイトやソーシャルネットワーキングサイトなど、ユーザーの登録やログインを要求されるウェブサイト(認証依頼者、または RP とも呼ばれる)が、Google、Facebook/Meta、GitHub などの信頼できるサードパーティーアイデンティティプロバイダー (IdP) に対して、ユーザー認証を委任する仕組みのことです。

RP は IdP と連携することができるため、ユーザーは IdP に登録済みのアカウントを使用してログインすることができます。少数の専用 IdP を介したアイデンティティ連合は、それぞれのサイトが別個のユーザー名とパスワードを用いて独自のログイン機能を管理する場合と比較して、セキュリティ、消費者の信頼、使い勝手の面でウェブ認証を改善しました。

問題は、従来のアイデンティティ連合が <iframe> やリダイレクト、サードパーティクッキーに頼っている点にあります。これらはサードパーティによるトラッキングにも利用されています。ブラウザーはユーザーのプライバシー保護のため、これらの機能の使用を制限していますが、その副作用として、トラッキングを目的としない正当な用途(アイデンティティ連合を含む)の実装が難しくなっているのです。

これは、連合ログイン全般に影響を与えるほか、もっと具体的な ID 連合の用途にも影響を及ぼします。

  • OIDC フロントチャネルログアウト: このフローでは、IDP が RP の <iframe> を複数埋め込む必要があり、これらは RP のクッキーに依存しています。
  • ソーシャルウィジェット: ソーシャルウィジェットを提供するには、RP の最上位オリジンから IDP のサードパーティクッキーが指定されている必要があります。
  • パーソナライズされたボタン: RP オリジン内の <button> にパーソナライズされたログイン情報を表示させる機能は、サードパーティクッキーが要求される IdP の <iframe> として実装されています。
  • 最上位ナビゲーションやポップアップを伴わないセッションの更新。

FedCM は、この問題を解決することを目的としており、ウェブ上での連合 ID フローのための専用の仕組みを提供するとともに、対応ブラウザーが R P上で特別な UI の要素を表示することができることで、ユーザーがログインに使用する IdP アカウントを選択することができます。

FedCM API を使用する方法には 2 つの部分があり、これについては下記リンク先のガイドで網羅されています。

  1. FedCM との IdP 連携 — RP が IdP と連携するために、IdP が提供する必要があるもの。
  2. RP の連合ログイン — RPが、ユーザーのIdPアカウントを使用してログインを行うために使用する FedCM 機能です。FedCM ログインリクエストは、navigator.credentials.get() メソッドを使用して開始されます。

メモ: Google ログインは、すでに FedCM に対応している IdP の一例です。FedCM への移行 では、Google ログインを現在使用するアプリを連合ログインに移行したい RP 向けの手順を提供しています。

権限ポリシー統合と <iframe> の対応

identity-credentials-get権限ポリシーを使用することで、FedCM の使用権限を制御することができます。 仕様上、以下のメソッドの使用が許可されています。

開発者は、allow 属性を使用すれば、<iframe> が FedCM を使用することを明示的に許可することができます。

html
<iframe src="3rd-party.example" allow="identity-credentials-get"></iframe>

<iframe> 内で FedCM を利用できることで、次のような用途が実現できます。

  • 大規模なサイトでは、サードパーティーのログインスクリプトが最上位のフレームを制御することを望まないでしょう。その代わりに、そのスクリプトを追加し、<iframe> 内から FedCM を呼び出すことを望むでしょう。
  • 一部の <iframe> では、それ自体で連合認証が要求されることがあります。

インターフェイス

IdentityCredential

連合認証が成功した際に生成されるユーザー ID 資格情報を表します。identity オプションを含む navigator.credentials.get() の呼び出しが成功すると、IdentityCredential インスタンスが履行されます。

IdentityCredentialError

ユーザーが連合資格情報を使用した認証を要求した後、ユーザーエージェントが ID アサーションを受信しなかったことを示す認証エラーを表します。

IdentityProvider

IdP を表し、関連する情報や機能へのアクセスを提供します。

IdP のログイン機能を定義します。これには、IdP のログインステータスを更新するための Navigator.login.setStatus() メソッドが含まれています。

他のインターフェイスへの拡張

CredentialsContainer.get(), the identity option.

identity は、認証依頼者 (RP) のウェブサイトがユーザーのログインに使用できる、連合 IdP の詳細情報を含むオブジェクトです。これに対して get() を呼び出すと、ユーザーが IdP を通じて RP にログインするためのリクエストが発生します。

ブラウザーの NavigatorLogin オブジェクトへのアクセスを提供します。

HTTP ヘッダー

Set-Login

HTTP 経由でログインステータスの更新を行うための HTTP メカニズムを指定します。

コード例については、次を参照してください。

仕様書

仕様書
Federated Credential Management API
# browser-api-identity-credential-interface

ブラウザーの互換性

関連情報