针对 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
。利用此标记,您可以 通过阻止第三方在 Chrome 中测试 FedCM 功能 Cookie。
如需了解该 API 的所有过往更新,请参阅 Federated Credential Management API 更新。
最新版 FedCM 包含新的自动重新身份验证功能,该功能支持在用户使用 FedCM 进行初始身份验证后返回时自动重新进行身份验证。从 Chrome 112 开始,自动重新身份验证功能以源试用的形式开始提供。
自动重新验证
目前,在用户通过 IdP 在 RP 上创建联合账号之后 通过 FedCM发送成功 他们需要在界面中完成相同步骤所需的网站 也就是说,他们需要明确确认并重新进行身份验证, 继续登录流程。作为主要的 FedCM 的目标是防止隐蔽跟踪,这种用户体验 (UX) 在用户之前是合理的 联合账号,但是在用户创建联合账号之后,账号就会变得不必要和繁琐。 已经走过一次了用户授予允许通信的权限后 因此在 RP 和 IdP 之间 强制用户再次明确确认其 之前已确认。因此,Chrome 推出了 RP 可为回访用户选择的用户体验。
FedCM 自动重新身份验证 (简称“auto-reauthn”)自动对用户重新进行身份验证(如果 RP 选择接受), 当用户使用 FedCM 完成初始身份验证后返回时返回。“最初的 身份验证”这是指用户创建账号或登录 RP 的 网站,方法是点按 FedCM 登录对话框中的“以...的身份登录...”按钮 我们第一次在同一个浏览器实例上使用它们
<ph type="x-smartling-placeholder">
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 可供使用。例如,用户也没有停用 FedCM 。
- 在此浏览器中,用户仅使用一个 FedCM 账号登录网站。
- 用户已使用该账号登录 IdP。
- 过去 10 分钟内未发生自动重新验证。
当满足上述条件时,系统将尝试自动对
用户在 FedCM navigator.credentials.get()
被调用后立即启动。
试试看
您可以在本地尝试通过Chrome 浏览器
标记“chrome://flags#fedcm-auto-re-authn
”已开启
Chrome 112 或更高版本。
出于测试目的,您可以移除 浏览器数据。
- 导航到
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 组件下)。