2013-08-05 5 views
1

У меня есть веб-сайт, который позволяет несколько способов аутентификации пользователя (например, facebook, twitter, windows и т. Д.). Каждый из них предоставляет другое имя идентификации при входе пользователя в систему. Мне нужно выяснить, кто предоставил идентификатор (ClaimsIdentity) и, соответственно, выбрать уникальный идентификатор для пользователя, чтобы добавить требования к конкретным заявкам на набор требований пользователей. Я создал таблицу, чтобы связать все сущности с основной страницей профиля пользователей. В этой таблице указано имя поставщика идентификации, уникальный идентификатор, предоставленный поставщиком идентификации, и уникальный идентификатор пользователя из таблицы профилей.Поиск текущего поставщика удостоверений в Windows Identity Foundation

Мой вопрос: как я могу найти имя поставщика удостоверений, когда пользователь подписывается на мой сайт, используя эти логины? Проблема в том, что если у пользователя есть тот же адрес электронной почты, который используется как для facebook, так и для twitter, я не могу узнать эту информацию у входящего принципала, как используется в методе аутентификации администратора аутентификации.

ответ

3

В каждом заявлении, которое вы получаете, обычно используются свойства Issuer и OriginalIssuer.

Если вы используете 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; 
+0

Спасибо Эухенио. Я задал аналогичный вопрос в комментарии в другом месте. Это также отвечает на это. – Hemant

Смежные вопросы