Вы можете настроить ADFS для возврата заявки по электронной почте, при условии, что ADFS имеет какой-то способ ее получения (Active Directory или другое хранилище атрибутов, может быть, база данных, к которой он может получить доступ?), И если ваше приложение настроено на дешифрование возвращенного токена прочитать претензии внутри.
Предполагается, что это ADFS 2.0:
- Настройте свой веб-ресурс как Доверие проверяющей стороны (похоже, что вы сделали это)
- Щелкните правой кнопкой мыши RP и выберите Изменить правила заявки ...
- На вкладке Правила преобразования выдачи добавьте новое правило для адреса электронной почты
Если вы можете получать электронную почту из Active Directory, поскольку ваши пользователи проходят аутентификацию через домен, вы можете выбрать шаблон правила «Отправлять атрибуты LDAP в качестве утверждений».
В противном случае вам нужно будет выбрать «Отправить заявки с использованием настраиваемого правила» и настроить хранилище настраиваемых атрибутов (для базы данных или чего бы то ни было) и выполнить действия по написанию правила заявки для этого.
После того, как вы настроите это, в вашем приложении ASP.NET вам нужно будет настроить его для использования ADFS в качестве эмитента токена. Это достигается с помощью Windows Identity Framework Microsoft.IdentityModel.dll и соответствующей конфигурации. Если вы установили WIF SDK , у вас должны быть некоторые дополнительные параметры в Visual Studio, а именно, если вы щелкните правой кнопкой мыши свой веб-проект, должна быть опция «Добавить ссылку на STS». Это запустит FedUtil, который является мастером, который автоматически настроит ваш web.config соответствующим образом. Google вокруг для того, чтобы настроить вещи.
Теперь, когда ваш сайт использует ADFS для заявок, вам нужно внести несколько изменений. В разделе <microsoft.identityModel>
вашего web.config убедитесь, что вы установили его для сохранения токена начальной загрузки (<service saveBootstrapTokens="true">
). Теперь в своем коде вы можете получить доступ к претензии по электронной почте в любое время, выполнив:
string email = (User.Identity as IClaimsIdentity).Claims.Where(c => c.ClaimType == ClaimTypes.Email).FirstOrDefault().Value;
Если вы не установите его для сохранения токена начальной загрузки, то коллекция заявок там будет пустой.
Существует потенциально много других факторов, которые могут все испортить на этом пути. Надеюсь, это поможет вам на правильном пути.