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