Federated Credential Management API は Chrome 108 でリリースされていますが、今後も進化していくことが予想されます。互換性のない変更は予定されていません。
これらの更新は、
以下の条件に該当する場合は、この更新が適用されます。
- Federated Credentials Management API を使用する IdP である。
- IdP または RP で、ユースケースに合わせて API を拡張することに関心がある方(たとえば、FedID CG リポジトリでの議論を見守っていたり参加したりしていて、API に加えられた変更を把握したい方)。
- ブラウザ ベンダーで、API の実装状況を確認したい場合。
この API を初めて検討する場合や、まだ試してみていない場合は、Federated Credential Management API の概要をご覧ください。
変更履歴
FedCM API の変更に関する最新情報については、ブログまたはニュースレターをご覧ください。
Chrome 131(2024 年 10 月)
- Storage Access API が、信頼シグナルとして FedCM を使用するようになりました。
- ユーザーが RP のオプトインで FedCM で認証する場合、IdP 埋め込みは
requestStorageAccess()
メソッドを呼び出して、追加のユーザー プロンプトを必要とせずに、独自のトップレベル Cookie へのストレージ アクセスを自動的に取得できます。
- ユーザーが RP のオプトインで FedCM で認証する場合、IdP 埋め込みは
Chrome 125(2024 年 4 月)
- 仕様で「アカウント リスト エンドポイント」の名前が「アカウント エンドポイント」に更新されたため、ドキュメントもそれに沿って更新されました。
- Button Mode API のオリジン トライアルは、パソコン版 Chrome 125 で利用できます。詳しくは、FedCM の最新情報: ボタンモード API オリジン トライアル、CORS、SameSite をご覧ください。
- Chrome 125 以降、ID アサーション エンドポイントで CORS が適用されます。
- Chrome 125 以降、Chrome は
SameSite=None
として明示的にマークされた Cookie のみを ID アサーション エンドポイントと アカウント エンドポイントに送信します。
Chrome 123(2024 年 2 月)
- Domain Hint API のサポートを追加しました。Domain Hint API を使用すると、RP は FedCM API 呼び出しで
domainHint
プロパティを指定して、ユーザーに一致するアカウントのみを表示できます。
Chrome 122(2024 年 1 月)
- Disconnect API のサポートを追加しました。Disconnect API を使用すると、RP はサードパーティ Cookie に依存することなく、ユーザーを IdP のアカウントから切断できます。
- RP と IdP が同じサイトにある場合、
/.well-known/web-identity
のチェックがスキップされるようになりました。 - サブリソースで同一サイトのログイン ステータスを設定できるようになりました。
Chrome 121(2023 年 12 月)
- FedCM の自動再認証をトリガーするための緩和された条件:
- FedCM の自動再認証機能は、ユーザーがリピーターの場合にのみトリガーされます。つまり、自動再認証をトリガーするには、ユーザーがブラウザ インスタンスごとに FedCM を使用して RP に 1 回ログインする必要があります。この条件は、トラッカーが ID プロバイダ(IdP)を装い、ユーザーの認識や同意なしにブラウザを騙してユーザーの自動再認証を実行するリスクを軽減するために最初に導入されました。ただし、トラッカーが RP コンテキストでサードパーティ Cookie にアクセスできる場合、この設計ではプライバシー上のメリットを保証できません。FedCM は、サードパーティ Cookie で利用可能な機能のサブセットのみを提供します。そのため、トラッカーがすでに RP コンテキストでサードパーティ Cookie にアクセスしている場合、FedCM へのアクセスによってプライバシー リスクが増加することはありません。
サードパーティ Cookie には正当な用途があり、条件を緩和することで UX が向上するため、Chrome 121 からこの動作が変更されます。ユーザーをリピーターとして扱う条件の制限を緩和することにしました。RP コンテキストで IdP がサードパーティ Cookie を使用できる場合、Chrome はapproved_clients
リストで指定されたユーザーのアカウント ステータスに関する IdP のクレームを信頼し、該当する場合は自動再認証をトリガーします。サードパーティ Cookie は、ユーザー設定、エンタープライズ ポリシー、ヒューリスティクス(Safari、Firefox、Chrome)、その他のウェブ プラットフォーム API(Storage Access API など)で使用できます。今後、IdP がサードパーティ Cookie へのアクセス権を失った場合、ユーザーが FedCM UI で明示的に権限を付与したことがない([続行] ボタンをクリックするなど)場合、そのユーザーは引き続き新規ユーザーとして扱われます。
デベロッパー側で必要な対応はありません。この変更により、IdP がサードパーティ Cookie にアクセスでき、ユーザーが過去に RP でアカウントを作成したことを主張している場合、自動再認証フローによりトリガーされる可能性が高くなります。
- FedCM の自動再認証機能は、ユーザーがリピーターの場合にのみトリガーされます。つまり、自動再認証をトリガーするには、ユーザーがブラウザ インスタンスごとに FedCM を使用して RP に 1 回ログインする必要があります。この条件は、トラッカーが ID プロバイダ(IdP)を装い、ユーザーの認識や同意なしにブラウザを騙してユーザーの自動再認証を実行するリスクを軽減するために最初に導入されました。ただし、トラッカーが RP コンテキストでサードパーティ Cookie にアクセスできる場合、この設計ではプライバシー上のメリットを保証できません。FedCM は、サードパーティ Cookie で利用可能な機能のサブセットのみを提供します。そのため、トラッカーがすでに RP コンテキストでサードパーティ Cookie にアクセスしている場合、FedCM へのアクセスによってプライバシー リスクが増加することはありません。
Chrome 120(2023 年 11 月)
- Chrome 120 で、次の 3 つの機能のサポートを追加しました。
- Login Status API: Login Status API は、ウェブサイト(特に IdP)がユーザーのログイン ステータスをブラウザに通知するメカニズムです。この API を使用すると、ブラウザは IdP への不要なリクエストを減らし、潜在的なタイミング攻撃を軽減できます。Login Status API は FedCM の要件です。この変更により、サードパーティ Cookie がブロックされている場合に FedCM を有効にするために
chrome://flags/#fedcm-without-third-party-cookies
フラグが必要ではなくなりました。 - Error API: Error API は、IdP から提供されたエラー情報を含むブラウザ UI を表示して、ユーザーに通知します。
- Auto-Selected Flag API: Auto-Selected Flag API は、自動再認証または明示的なメディエーションが発生したときに、[Continue as] ボタンをタップして明示的なユーザー権限が取得されたかどうかを IdP と RP の両方と共有します。共有は、IdP と RP の通信に対してユーザーの許可が付与された後にのみ行われます。
- Login Status API: Login Status API は、ウェブサイト(特に IdP)がユーザーのログイン ステータスをブラウザに通知するメカニズムです。この API を使用すると、ブラウザは IdP への不要なリクエストを減らし、潜在的なタイミング攻撃を軽減できます。Login Status API は FedCM の要件です。この変更により、サードパーティ Cookie がブロックされている場合に FedCM を有効にするために
Chrome 117(2023 年 9 月)
- Idp Sign-In Status API のオリジン トライアルは、Android 版 Chrome 117 以降で利用できます。詳しくは、FedCM の最新情報: IdP Sign-In Status API、ログイン ヒントなどをご覧ください。
Chrome 116(2023 年 8 月)
- Chrome 116 で、次の 3 つの機能のサポートを追加しました。
- Login Hint API: ログインする優先ユーザー アカウントを指定します。
- User Info API: リピーターの情報を取得して、ID プロバイダ(IdP)が iframe 内にパーソナライズされたログインボタンをレンダリングできるようにします。
- RP Context API: FedCM ダイアログで「ログイン」とは異なるタイトルを使用します。
- IdP Sign-In Status API のオリジン トライアルが利用可能になりました。詳しくは、FedCM の更新: IdP Sign-In Status API、ログイン ヒントなどをご覧ください。
Chrome 115(2023 年 6 月)
- FedCM を使用した最初の認証後にユーザーが戻ってきたときに自動的に再認証できるように、自動再認証のサポートを追加しました。これにより、ユーザー エクスペリエンスが向上し、最初の認証後に RP に対する再認証をより効率的に行うことができます。詳しくは、FedCM の自動再認証をご覧ください。
Chrome 110(2023 年 2 月)
- ID アサーション エンドポイントの場合、IdP は(
Referer
ヘッダーではなく)Origin
ヘッダーをチェックし、値がクライアント ID のオリジンと一致するかどうかを確認する必要があります。 - FedCM のクロスオリジン iframe サポートが利用可能になりました。埋め込み元は、埋め込まれたクロスオリジン iframe で FedCM API を許可するように Permissions-Policy
identity-credentials-get
を指定する必要があります。クロスオリジン iframe の例を確認できます。 - 新しい Chrome フラグ
chrome://flags/#fedcm-without-third-party-cookies
を追加しました。このフラグを使用すると、サードパーティ Cookie をブロックして、Chrome で FedCM 機能をテストできます。詳しくは、FedCM のドキュメントをご覧ください。
Chrome 108(2022 年 10 月)
- ドキュメント内の「トップレベル マニフェスト」が「well-known file」に変更されました。実装の変更は不要です。
- ドキュメント内の「IdP マニフェスト」が「構成ファイル」に変更されました。実装の変更は必要ありません。
- 「config ファイル」の
id_token_endpoint
の名前がid_assertion_endpoint
に変更されます。 - IdP へのリクエストに、
Sec-FedCM-CSRF: ?1
ヘッダーではなくSec-Fetch-Dest: webidentity
ヘッダーが含まれるようになりました。
Chrome 105(2022 年 8 月)
- ドキュメントに重要なセキュリティ情報を追加しました。ID プロバイダ(IdP)は、
Referer
ヘッダーが、ID トークン エンドポイントで事前に登録された RP のオリジンと一致しているかどうかを確認する必要があります。 - 最上位のマニフェストの名前が
/.well-known/fedcm.json
から/.well-known/web-identity
に変更され、provider_urls
で指定された URL にファイル名を含める必要があります。 FederatedCredential
インスタンスのメソッドlogin()
、logout()
、revoke()
は使用できなくなりました。- Federated Credential Management API で、
FederatedCredential
の代わりに新しい型IdentityCredential
が使用されるようになりました。これは特徴検出に使用できますが、それ以外の場合はほとんど目に見えない変更です。 - ログイン機能を
navigator.credentials.get()
とFederatedCredential.prototype.login()
の組み合わせからnavigator.credentials.get()
に移動しました。 - マニフェストの失効エンドポイントが有効でなくなった。
navigator.credentials.get()
呼び出しでは、federated
フィールドではなくidentity
フィールドを使用します。url
はconfigURL
に変更され、navigator.credentials.get()
呼び出しのパスではなく、マニフェスト JSON ファイルの完全な URL にする必要があります。nonce
がnavigator.credentials.get()
の省略可能なパラメータになりました。hint
はnavigator.credentials.get()
のオプションとして使用できなくなりました。
const credential = await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/anything.json',
clientId: '********',
nonce: '******'
}]
}
});
const { token } = credential;
Chrome 104(2022 年 6 月)
- ID トークン エンドポイントに送信される
consent_acquired
パラメータがdisclosure_text_shown
になりました。値は変更されません。 - IdP マニフェストのブランディング アイコンは SVG 画像のサポートを終了しましたが、RP のコンテンツ セキュリティ ポリシーで許可する必要がなくなりました。
Chrome 103(2022 年 5 月)
- デスクトップ環境をサポートしています。
- デスクトップで RP ごとの設定をサポート。
- クライアント メタデータ エンドポイントがオプションになりました。このエンドポイントでは、プライバシー ポリシーの URL も省略可能です。
- ドキュメントに CSP
connect-src
の使用に関する注意事項を追加しました。