在Windows Identity Foundation中查找当前的身份提供程序

时间:2013-08-05 12:45:12

标签: c# wif claims-based-identity

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

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

1 个答案:

答案 0 :(得分:3)

您通常会在每项声明中使用IssuerOriginalIssuer属性。

如果您使用e-mail作为唯一标识符:

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;