Подтвердить что ты не робот

Как реализовать SAMLP 2.0 у поставщика услуг ASP.NET MVC 4?

Я разрабатываю веб-приложение MVC 4 на С# и хочу обрабатывать логин с помощью существующего поставщика идентификации SAML 2.0. Я использую привязку HTTP POST с SimpleSAMLphp.

Кажется, что в .NET 4.5 я должен использовать Windows Identity Foundation. Во-первых, я попытался установить Identity and Access Tool. (Я использую Visual Studio 2013, который, как предполагается, интегрировал этот инструмент, но версия VS2013 не поддерживает "повторное подключение" , что означает Я не могу использовать его для добавления поддержки WIF в существующее приложение.)

После указания инструмента Identity and Access на мои метаданные поставщика удостоверения я получаю следующее сообщение об ошибке:

userSelection.SecurityTokenServiceMetadata.SecurityTokenServiceDescriptor

По-видимому, это сообщение об ошибке, указывающее, что SAMLP 2.0 не поддерживается WIF. Это, похоже, отличается от токенов SAML 2.0, которые поддерживаются (по крайней мере, эта устаревшая документация указывает, что существует пространство имен Microsoft.IdentityModel.Tokens.Saml2).

Затем я обнаружил расширение WIF для SAML 2.0. Однако это было выпущено в мае 2011 года и с тех пор, похоже, не было затронуто. Тем не менее я загрузил расширение и попытался построить SamlConfigTool, входящий в ZIP файл. Инструмент представляет собой консольное приложение, которое сообщает мне, что:

Этот инструмент будет запрашивать информацию, необходимую для создания файла метаданных, который описывает вашу полагающуюся сторону. Он предложит загрузить адреса файлов метаданных партнеров. Наконец, он выведет файл с именем Changes_To_Web_Config.xml, в котором будут внесены изменения в файл web.config вашего веб-сайта, чтобы включить защиту SAML.

После ввода моего идентификатора объекта и конечной точки SAML SamlConfigTool быстро разбился. Хорошо, возможно, мне не нужно использовать инструмент настройки, и я могу просто скопировать то, что было сделано в примере проекта ServiceProvider VS. После миграции я могу открыть проект в VS2012, но мне непонятно, как это работает - он, похоже, не содержит кода С#, а всего лишь новые записи в Web.config. Мне не ясно, как я должен адаптировать эту конфигурацию для замены пользовательского кода входа в моем приложении MVC 4 и в любом случае полагаться на мертвую библиотеку с 3 лет назад, не кажется отличной идеей.

Итак, , что является лучшим способом реализации SAML 2.0 в ASP.NET MVC 4? Я в настоящее время расшифровываю, кодирую, разбираю и сжимаю XML вручную, и кажется, что должен быть более простой способ.

4b9b3361

Ответ 1

Вы правы в том, что WIF (теперь перешел в core.NET под System.IdentityModel) поддерживает только токены SAML2, а не протоколы SAML2, необходимые для реализации поставщика услуг.

Kentor.AuthServices - это реализация SP с открытым исходным кодом для ASP.NET MVC, созданная поверх .NET 4.5. Установите пакет и добавьте некоторые настройки в web.config - не требуется кодирование.

Отказ от ответственности: я являюсь автором Kentor.AuthServices

Ответ 2

Насколько я знаю, поддержка SAML2P в WIF пока отсутствует. Я предлагаю вам реализовать его самостоятельно.

Вы можете использовать библиотеку, которая реализует SAML2P и использовать ее в вашем проекте MVC. Некоторые из библиотек, которые вы можете использовать, OIOSAML.NET или коммерческие ComponentPro SAML.

Или есть возможность установить промежуточный IAM. Из MVC вы устанавливаете провайдера ideneity как этот промежуточный IAM, используя ws- * protocol (стандартный способ, реализованный в visual studio). Этот IAM должен быть настроен для передачи ваших сообщений аутентификации IDP, который вы хотите использовать с SAML2P. После аутентификации пользователя IAM будет только преобразовывать претензии и выдавать новый токен, которому доверяет MVC-приложение. Попытайтесь посмотреть Shibboleth или ThinkTecture IdentityServer v2 ( но второй не реализует SAML2P, поэтому вам придется добавить поддержку самостоятельно). Или вы можете использовать ADFS2.