Вы можете настроить 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 соответствующим образом. Погуглите, как все устроить.
Теперь, когда ваш сайт использует ADFS для заявок, вам нужно внести несколько изменений. В разделе <microsoft.identityModel>
вашего web.config убедитесь, что вы установили его для сохранения токена начальной загрузки (<service saveBootstrapTokens="true">
). Теперь в коде вы можете получить доступ к заявке по электронной почте в любое время, выполнив следующие действия:
string email = (User.Identity as IClaimsIdentity).Claims.Where(c => c.ClaimType == ClaimTypes.Email).FirstOrDefault().Value;
Если вы не настроите его для сохранения токена начальной загрузки, тогда коллекция Claims будет пустой.
Тем не менее, потенциально существует множество других факторов, которые могут все испортить на этом пути. Надеюсь, это поможет вам встать на правильный путь.
person
Sean Hanley
schedule
23.02.2012