Federated Credential Management API 随 Chrome 一起提供 108,但预计会继续 不断演变。我们未计划进行任何破坏性更改。
这些更新适用于哪些对象?
如果您符合以下条件,这些更新就会为您送上:
- 您是使用 Federated Credential Management API 的 IdP。
- 您是 IdP 或 RP,希望根据自己的用途扩展此 API 大小写 - 例如或参与 FedID CG 代码库中的讨论 并希望了解对 API 所做的更改
- 您是浏览器供应商,希望了解后续实现情况 该 API 的状态。
如果您刚开始接触此 API 或尚未试用过此 API,请阅读 Federated Credential Management API 简介。
更新日志
要及时了解 FedCM API 的变化,请查看我们的 博客或 简报。
Chrome 125(2024 年 4 月)
- 由于规范更新了“账号列表端点”的名称到“账号” 端点”,我们的文档也相应调整。
- Button Mode API 可在 Chrome 桌面版 125 上源试用。了解 FedCM 更新:Button Mode API 源试用、CORS 和 SameSite。
- 对以下项目强制执行 CORS: ID 断言端点 从 Chrome 125 开始。
- Chrome 只会将明确标记为
SameSite=None
的 Cookie 发送到 ID 断言端点和 accounts 端点正在启动 从 Chrome 125 开始。
Chrome 123(2024 年 2 月)
- 添加了对 Domain Hint API 的支持。域提示
API 让 RP
在 FedCM API 调用中指定
domainHint
属性,以仅显示匹配的 创建该用户的账号
Chrome 122(2024 年 1 月)
- 添加了对 Disconnect API 的支持。脱节 API 允许 RP 将其用户与 IdP 的账号断开连接,而不依赖 第三方 Cookie。
- 正在检查
/.well-known/web-identity
现在,当 RP 和 IdP 是同一网站时,系统会跳过此参数。 - 子资源现在可以设置同网站登录 状态。
Chrome 121(2023 年 12 月)
- 触发 FedCM 自动重新身份验证的放宽条件:
<ph type="x-smartling-placeholder">
- </ph>
- Google Cloud 控制台中的自动重新身份验证功能
FedCM 仅在用户返回时触发。这意味着
都需要在每个浏览器实例上使用 FedCM 登录一次 RP,
然后才能触发自动重新验证。这个条件最初是
旨在降低追踪器冒充身份的风险
提供方 (IdP) 以及诱骗浏览器自动重新验证用户身份
不知情或未经其同意。不过,这种设计并不能保证
如果跟踪器有权访问
RP 背景信息。FedCM 仅通过
第三方 Cookie,因此,如果跟踪器已经拥有第三方 Cookie 的访问权限
Cookie,访问 FedCM 不会带来额外的隐私保护
风险。
由于第三方 Cookie 的使用是合法的,并且放宽了 可改善用户体验,从 Chrome 121 开始,此行为发生了变化。 我们决定放宽条件限制, 返回:如果 RP 上的 IdP 可以使用第三方 Cookie 情境,Chrome 会信任 IdP 关于用户账号状态的声明 (通过approved_clients
列表指定)并触发自动重新身份验证 (如果适用)。可通过以下设置使用第三方 Cookie:用户设置、 企业政策、启发式算法 (Safari、 Firefox、 Chrome) 以及其他网络平台 API(如 Storage Access API)。注意事项 如果 IdP 将来失去第三方 Cookie 访问权限, 从未在 FedCM 界面上明确授予权限(例如, 新用户。
开发者无需采取任何行动。请注意,自动重新验证流程 如果 IdP 拥有第三方 Cookie 访问权限,则此更改会更多触发 并声称用户过去已在 RP 上创建过账号。
- Google Cloud 控制台中的自动重新身份验证功能
FedCM 仅在用户返回时触发。这意味着
都需要在每个浏览器实例上使用 FedCM 登录一次 RP,
然后才能触发自动重新验证。这个条件最初是
旨在降低追踪器冒充身份的风险
提供方 (IdP) 以及诱骗浏览器自动重新验证用户身份
不知情或未经其同意。不过,这种设计并不能保证
如果跟踪器有权访问
RP 背景信息。FedCM 仅通过
第三方 Cookie,因此,如果跟踪器已经拥有第三方 Cookie 的访问权限
Cookie,访问 FedCM 不会带来额外的隐私保护
风险。
Chrome 120(2023 年 11 月)
- 在 Chrome 120 中添加了对以下三项功能的支持:
<ph type="x-smartling-placeholder">
- </ph>
- Login Status API:登录状态
API是一个
这种机制是指网站(尤其是 IdP)
登录状态。利用此 API,浏览器可以减少对
降低潜在的定时攻击Login Status API 是一个
FedCM 的要求。
进行这项更改后,
chrome://flags/#fedcm-without-third-party-cookies
标志 当第三方 Cookie 被屏蔽时,不再需要启用 FedCM。 - Error API:Error API API会通知 用户。
- Auto-Selected Flag API:自动选择标记 API 分享是否通过点按 同时使用 IdP 和 RP 和 RP 的继续按钮(每次自动重新验证身份时) 或出现了明确的中介。仅在用户 授予 IdP 和 RP 通信的权限。
- Login Status API:登录状态
API是一个
这种机制是指网站(尤其是 IdP)
登录状态。利用此 API,浏览器可以减少对
降低潜在的定时攻击Login Status API 是一个
FedCM 的要求。
进行这项更改后,
Chrome 117(2023 年 9 月)
- Chrome 117 及更高版本在 Android 设备上提供 Idp Sign-In Status API 源试用。如需了解详情,请参阅 FedCM 更新:IdP Sign-In Status API、登录提示等。
Chrome 116(2023 年 8 月)
- 在 Chrome 116 中添加了对以下三项功能的支持:
<ph type="x-smartling-placeholder">
- </ph>
- Login Hint API:指定要登录的首选用户账号。
- User Info API:获取回访用户的信息,以便身份提供方 (IdP) 可以在 iframe 中呈现个性化的登录按钮。
- RP Context API:使用与“登录”不同的标题。
- IdP Sign-In Status API 已推出源试用。如需了解详情,请参阅 FedCM 更新:IdP Sign-In Status API、登录提示等。
Chrome 115(2023 年 6 月)
- 添加了对自动重新身份验证的支持,这让用户可以在通过 FedCM 完成初始身份验证后自动重新进行身份验证。这样可以改善用户体验,并在初次身份验证后更方便地向 RP 重新进行身份验证。详细了解 FedCM 自动重新身份验证。
Chrome 110(2023 年 2 月)
- 对于 ID 断言端点,IdP 需要检查
Origin
标头(而不是Referer
标头),以查看该值是否与客户端 ID 的来源相匹配。 - FedCM 现在支持跨源 iframe。通过
嵌入器应该指定
Permissions-Policy
identity-credentials-get
,以允许在嵌入式跨源中使用 FedCM API iframe。您可以参阅示例 跨源 iframe。 - 添加了新的 Chrome 标志
chrome://flags/#fedcm-without-third-party-cookies
。利用此标记,您可以在 Chrome 中测试 FedCM 功能 来阻止第三方 Cookie如需了解详情,请参阅 FedCM 文档。
Chrome 108(2022 年 10 月)
- “顶级清单”现称为“已知文件”。 无需对实现进行任何更改。
- “IdP 清单”现在称为“配置文件”。否 实施更改。
- “配置文件”中的
id_token_endpoint
已重命名为id_assertion_endpoint
。 - 发送到 IdP 的请求现在包含
Sec-Fetch-Dest: webidentity
标头,而不是Sec-FedCM-CSRF: ?1
标头。
Chrome 105(2022 年 8 月)
- 在文档中添加了重要的安全信息。身份
提供方 (IdP) 需要检查
Referer
标头是否与源站匹配 提前登记的 RP ID 令牌端点。 - 顶级清单已从
/.well-known/fedcm.json
重命名为/.well-known/web-identity
,在provider_urls
中指定的网址应 包含文件名 FederatedCredential
中的login()
、logout()
和revoke()
方法 实例将不再可用。- Federated Credential Management API 现在使用新类型
IdentityCredential
,而非FederatedCredential
。这可用于 但在很大程度上属于不可见的更改。 - 将登录功能从
navigator.credentials.get()
和FederatedCredential.prototype.login()
至navigator.credentials.get()
。 - 清单中的撤消端点不再有效。
- 对于以下查询,请使用
identity
字段而不是federated
字段navigator.credentials.get()
次通话。 - “
url
”现为configURL
并且必须是清单 JSON 文件的完整网址,而不是navigator.credentials.get()
调用。 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 设置。
- 通过 客户端元数据端点 现在是可选属性在此端点中,隐私权政策网址也是可选的。
- 在文档中添加了关于使用 CSP
connect-src
的注意事项。