1

У нас есть многопользовательский веб-сайт asp.net MVC, который поддерживает несколько партнеров. В настоящее время мы используем аутентификацию для аутентификации пользователей. Теперь некоторые из партнеров попросили о поддержке единого входа с SAML.Аутентификация против нескольких поставщиков удостоверений, использующих WSFederationAuthenticationModule для asp.net

Я сделал быструю POC, чтобы протестировать ее против провайдера идентификации «Thinktecture». Все, что я сделал, это установить расширение «Идентификация и доступ» для VS 2012 и настроить поставщика удостоверений. Я заметил, что расширение добавило параметры конфигурации, такие как URL-адрес IP и области в файле web.config. Он также добавил модуль «WSFederationAuthenticationModule» для обработки аутентификации. Этот модуль обрабатывал все переадресации и проверку ответа за сценой.

В моем случае, поскольку у нас будет несколько поставщиков удостоверений, в зависимости от партнера, я буду выбирать поставщика удостоверений. URL-адреса различных IP-адресов будут сохранены в базе данных. Я не могу перечислить все IP-адреса в web.config. Следовательно, мне нужен механизм, в котором я могу перенаправить пользователя на соответствующий IP-адрес и после того, как IP-сервер вернет результат, проверьте результат и получите информацию пользователя через формулы. Я не хочу делать синтаксический анализ XML результата и проверять ответ, но просто хочу вызвать методы в «WSFederationAuthenticationModule», чтобы выполнить тяжелую работу. Но я не уверен, какие методы будут полезны для меня. Может кто-нибудь помочь мне или список последовательности методов, которые мне нужно выполнить для достижения этого?

ответ

2

Посмотрите на мой простой пример

http://www.wiktorzychla.com/2014/11/simplest-saml11-federated-authentication.html

Хитрость заключается в том, чтобы не иметь модуль WSFam в pipleline, а использовать его API для запуска редиректов и потребляют ответы. Если вы будете следовать мой код, вы увидите, есть два пункта

// wsfed response or not 
if (!fam.IsSignInResponse(...)) 
    // redirect to provider 
else 
    // create local config and validate the incoming token 

Этот простой пример идеально подходит для сценария Многоквартирный, на самом деле мы используем WS-кормили ежедневно в среде и Многоквартирный большинство клиентов на основе этого ядра подход.

А именно, создавая SecurityTokenHandlerConfiguration программно в ветке, которая потребляет ответ, дает вам полный контроль над тем, как вы проверяете токены для разных арендаторов.

+0

Спасибо за ссылку. Это было действительно полезно. Еще одна вещь, которую я хотел проверить с вами, - это процесс проверки сертификатов/toke. В своем блоге вы предоставили пример реализации интерфейса «ЭмитентNameRegistry». Не могли бы вы уточнить, что должно быть включено в конкретную реализацию? – Amey

+0

@Amey: ответили ниже моего сообщения в блоге. Если вам нужна дополнительная информация, напишите здесь заметку. –

+0

Я просто хотел сказать спасибо за этот ответ. Вы заслуживаете много оборотов. – mghaoui

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