我有一个基于 Azure Functions 构建的应用程序。
我的用户可以使用 Facebook、Google 和 Microsoft 作为身份提供程序,因为我的应用程序已在这些提供程序中注册
。每次调用我的 Azure 函数时,都会为其提供一个ClaimPrincipal
实例。作为声明的一部分,我有可用于识别给定用户的nameidentifier
声明。
问题
如果用户A
使用我的应用程序并被分配了nameidentifier
sid:123456
,那么如果同一用户使用不同的应用程序,是否会为同一用户分配相同的nameidentifier
?
不同,我的意思是由另一家公司开发的应用程序,该公司在标识提供者中有自己的注册。
名称标识符可以是任何内容;电子邮件地址或 Kerberos 主体名称是此类信息的常见日常示例。它们并不总是等于用户名。
您可以从 IdP 返回与用户名完全无关的名称 ID。
要回答相同的问题,这完全取决于您将服务提供商连接到哪些标识提供者。听起来很有可能,您想要的是多个返回相同 NameID 格式的标识提供者。
在 SAML 2.0 中,您可以指定 NameID 可以返回的格式,以便跨身份提供程序使用通用模式,并防止使用逻辑来解析可能返回的每个 NameID。
名称 ID 是 IDP 应用程序提供的内容。这是您的应用程序在从 IDP 返回信息时验证的内容。
希望对您有所帮助。
我认为每个OpenID身份提供者的令牌中都应该有"openid"声明。它是UUID,因此它绝对是可用于区分用户的唯一值。