C# 在Windows身份基础中查找当前身份提供者

C# 在Windows身份基础中查找当前身份提供者,c#,wif,claims-based-identity,C#,Wif,Claims Based Identity,我有一个网站,它允许多种方式对用户进行身份验证(如facebook、twitter、windows等)。当用户登录时,每种方式都提供不同的身份名称。我需要找出谁提供了身份(ClaimsIdentity),并相应地为用户选择唯一的id,以便将特定于应用程序的声明添加到用户声明集中。 我创建了一个表,将所有实体与用户主配置文件表相关联。此表包含标识提供程序的名称、标识提供程序提供的唯一id以及配置文件表中的唯一用户id 我的问题是,当用户使用这些登录登录登录到我的站点时,如何找到身份提供商的名称?问

我有一个网站,它允许多种方式对用户进行身份验证(如facebook、twitter、windows等)。当用户登录时,每种方式都提供不同的身份名称。我需要找出谁提供了身份(ClaimsIdentity),并相应地为用户选择唯一的id,以便将特定于应用程序的声明添加到用户声明集中。 我创建了一个表,将所有实体与用户主配置文件表相关联。此表包含标识提供程序的名称、标识提供程序提供的唯一id以及配置文件表中的唯一用户id


我的问题是,当用户使用这些登录登录登录到我的站点时,如何找到身份提供商的名称?问题是,如果用户在facebook和twitter上使用相同的电子邮件地址,我无法在传入主体中找到身份验证管理器的身份验证方法中使用的信息。

您通常在获得的每个声明中使用
颁发者
原始请求者
属性

如果使用
电子邮件
作为唯一标识符:

var u = this.User as IClaimsPrincipal;

var c = (u.Identity as IClaimsIdentity)
                             .Claims
                             .First( c => c.ClaimType == ClaimTypes.Email );

var issuer = c.Issuer;
var originalIssuer = c.OriginalIssuer;

谢谢尤金尼奥。我在其他地方的评论中也提出了类似的问题。这也回答了这个问题。