我们对 FedCM 进行了一些更新,包括推出了用于自动重新身份验证的新源试用。
Federated Credential Management API (FedCM) 是一个 Web API,可实现可保护隐私的身份联合。借助身份联合,RP(依赖方)依赖 IdP(身份提供方)为用户提供账号,而无需用户输入新的用户名和密码。
FedCM 是一个专用 API,可让浏览器了解 RP 和 IdP 交换信息的上下文,告知用户共享的信息和权限级别,并防止意外滥用。
更新
Chrome 的 FedCM 实现进行了一些更新:
- 对于ID 断言端点,IdP 需要检查
Origin
标头(而非Referer
标头),以查看值是否与客户端 ID 的来源匹配。 - 添加了新的 Chrome 标志
chrome://flags/#fedcm-without-third-party-cookies
。借助此标志,您可以通过屏蔽第三方 Cookie 在 Chrome 中测试 FedCM 功能。
如需了解该 API 的所有过往更新,请参阅 Federated Credential Management API 更新。
最新版 FedCM 包含一项新的自动重新身份验证功能,可在用户使用 FedCM 进行初始身份验证后再次访问时自动重新对其进行身份验证。从 Chrome 112 开始,自动重新身份验证可作为来源试用。
自动重新验证
目前,用户通过 FedCM 在 RP 上使用 IdP 创建联合账号后,下次访问该网站时,需要在界面中完成相同的步骤。也就是说,他们需要明确确认并重新进行身份验证,才能继续完成登录流程。由于 FedCM 的一个主要目标是防止隐秘跟踪,因此在用户创建联邦账号之前,此用户体验 (UX) 很有意义,但在用户完成一次此流程后,此体验就变得多余且繁琐。在用户授予允许 RP 与 IdP 之间进行通信的权限后,如果再强制要求用户针对之前已确认的内容再次明确确认,对隐私或安全没有任何好处。因此,Chrome 推出了更简洁的用户体验,让 RP 可以为其回访用户选择。
FedCM 自动重新身份验证(简称“auto-reauthn”)会在用户使用 FedCM 进行初始身份验证后再次访问时自动重新验证用户身份(如果 RP 选择启用此功能)。这里的“初始身份验证”是指用户在同一浏览器实例中首次点按 FedCM 登录对话框中的“Continue as...” 按钮,创建账号或登录 RP 的网站。

RP 可以使用 autoReauthn: true
调用 navigator.credentials.get()
来请求自动重新授权。
const cred = await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/fedcm.json",
clientId: "1234",
}],
// NOTE: We are exploring different API options to expose this
// functionality here:
// https://github.com/fedidcg/FedCM/issues/429#issuecomment-1426358523
// You should expect that, as a result of the origin trial, we'll
// learn more from developers and browser vendors what works best here.
autoReauthn: true, // default to false
},
});
在以下情况下,系统会自动重新进行身份验证:
- FedCM 可供使用。例如,用户尚未在全球范围内或针对 RP 停用 FedCM。
- 用户仅使用一个 FedCM 账号在此浏览器中登录了该网站。
- 用户已使用该账号登录 IdP。
- 自动重新授权未在过去 10 分钟内发生。
满足上述条件后,系统会在调用 FedCM navigator.credentials.get()
后立即尝试自动重新对用户进行身份验证。
试试看
您可以在 Chrome 112 或更高版本中开启 Chrome 标志 chrome://flags#fedcm-auto-re-authn
,在本地试用 FedCM 自动重新身份验证。
出于测试目的,您可以通过移除浏览器数据来重置 10 分钟的安静期。
- 导航到
chrome://history
。 - 在搜索记录框中,输入 RP 的来源。
- 点击三点状图标 ⋮,然后选择从历史记录中移除。
- 重启 Chrome。
参与源试用
您还可以加入 第三方来源试用计划(适用于 Chrome 112 到 Chrome 114),在您的网站上启用该功能。
通过源试用,您可以试用新功能,并向 Web 标准社区提供有关其易用性、实用性和有效性的反馈。如需了解详情,请参阅面向 Web 开发者的源试用指南。如需注册本次或其他源试用,请访问注册页面。
为了注册第三方来源 试用并启用该功能 对第三方的要求:
- 前往源试用注册页面。
- 点击 Register 按钮,然后填写申请令牌的表单
- 输入服务来源作为网络来源。
- 选中第三方匹配,以便在其他源上通过 JavaScript 注入令牌。
- 点击提交。
- 将颁发的令牌嵌入第三方。
要将令牌嵌入第三方,请将以下代码添加到 JavaScript 中 库或 SDK。
const tokenElement = document.createElement('meta');
tokenElement.httpEquiv = 'origin-trial';
tokenElement.content = 'TOKEN_GOES_HERE';
document.head.appendChild(tokenElement);
将 TOKEN_GOES_HERE
替换为您自己的令牌。
互动和分享反馈
如果您有任何反馈或在测试过程中遇到任何问题,可以在 crbug.com 上在 Blink> Identity> FedCM 组件下分享这些反馈和问题。