category
实验:这是一项实验技术
在生产中使用之前,请仔细检查浏览器兼容性表。
联合凭据管理API(或FedCM API)为身份提供者(IdP)提供了一种标准机制,使身份联合服务以保密的方式在网络上可用,而不需要第三方cookie和重定向。这包括一个JavaScript API,它允许在登录或注册网站等活动中使用联合身份验证。
FedCM概念
身份联合是指将用户身份验证从需要用户注册或登录的网站(如电子商务或社交网站(也称为依赖方或RP)委托给可信的第三方身份提供商(IdP),如谷歌、脸书/Meta、GitHub等。
依赖方(RP)可以与IdP集成,允许用户使用他们在IdP注册的帐户登录。与每个网站使用单独的用户名和密码管理自己的登录需求相比,通过一小组专用IdP进行的身份联合在安全性、消费者信心和用户体验方面改进了网络身份验证。
问题是,传统的身份联合依赖于<iframe>、重定向和第三方cookie,它们也用于第三方跟踪。浏览器正在限制这些功能的使用,以保护用户隐私,但副作用是,这使得有效的非跟踪使用更难实现,其中包括身份联合。
这通常会影响联合登录,以及更具体的身份联合使用情况:
- OIDC front-channel logout:此流程要求IDP嵌入几个依赖RP cookie的RP<iframe>。
- 社交小部件:为了提供社交小部件,必须从RP顶级来源提供IdP第三方cookie。
- 个性化按钮:RP源中<button>上的个性化登录信息显示实现为需要第三方cookie的IdP<iframe>。
- 无顶层导航或弹出窗口的会话刷新(Session Refresh without top-level navigation or popups.)
- OIDC front-channel logout: This flow requires the IDP to embed several RP
<iframe>
s, which rely on RP cookies. - Social Widgets: In order to provide social widgets, the IdP third-party cookie must be provided from the RP top-level origin.
- Personalized buttons: The display of personalized sign in information on a
<button>
in the RP origin is implemented as an IdP<iframe>
that requires third party cookies. - Session Refresh without top-level navigation or popups.
FedCM旨在解决这个问题,为网络上的联合身份流提供一种专用机制,并使支持浏览器能够在RP上提供特殊的UI元素,允许用户选择用于登录的IdP帐户。
使用FedCM API有两个部分,以下链接指南介绍了这两个部分:
- IdP integration with FedCM ——身份提供者需要提供什么,以便RP可以与之集成。
- RP federated sign-in --RP需要使用FedCM功能来使用用户的IdP帐户对其进行登录。使用navigator.credentials.get()方法启动FedCM登录请求。
注意: Google Sign In是一个已经支持FedCM的IdP示例。迁移到FedCM为希望使用谷歌登录将现有应用程序迁移到联合登录的RP提供了说明。
权限策略集成和<iframe>支持
identity-credentials-get
Permissions-Policy 可以用于控制使用FedCM的权限,更具体地说是使用get()方法。
开发人员可以通过allow属性显式授予<iframe>使用FedCM的权限:
HTML
<iframe src="3rd-party.example" allow="identity-credentials-get"></iframe>
FedCM在<iframe>中的可用性支持以下几个用例:
- 较大的网站不希望第三方登录脚本获得对顶级框架的控制;相反,他们将希望添加该脚本并从<iframe>中调用FedCM。
- 某些<iframe>本身可能需要联合身份验证。
接口
身份凭证
表示由成功的联合身份验证产生的用户身份凭据。一个成功的navigator.certificate.get()调用,包括一个标识选项,可以用一个IdentityCredential实例来实现。
IdentityProvider
表示IdP,并提供对相关信息和功能的访问。
导航器登录
定义IdP的登录功能,包括用于更新IdP登录状态的Navigator.login.setStatus()方法。
对其他接口的扩展
CredentialsContainer.get()
, the identity
option.
identity是一个对象,包含依赖方(RP)网站可用于登录用户的联合IdP的详细信息。它会导致get()调用启动请求,要求用户使用IdP登录RP。
提供对浏览器的NavigatorLogin对象的访问。
HTTP标头
提供一种HTTP机制,用于通过HTTP更新登录状态。
示例
See also
- 登录 发表评论