#asp.net-core #asp.net-core-mvc #wif #claims-based-identity
#asp.net-core #asp.net-core-mvc #с помощью #идентификация на основе утверждений
Вопрос:
У меня есть ASP.NET Запущен проект Core 1.0. Когда я добавляю атрибут ClaimsPrinciplePermission к своим методам действий, я получаю следующую ошибку при переходе к любому методу действия, имеющему этот атрибут.
Исключение типа ‘System.В системе произошло исключение InvalidOperationException.IdentityModel.Услуги.dll, но не был обработан в пользовательском коде
Дополнительная информация: ID7024: была предпринята попытка использования атрибута ClaimsPrincipalPermission, и, возможно, раздел конфигурации не определен, подробности см. Во внутреннем исключении. Также убедитесь, что в разделе определен элемент ClaimsAuthorizationManager.
Это внутреннее исключение
ID7027: не удалось загрузить конфигурацию идентификатора, поскольку не найден раздел конфигурации.
Это мой web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<configSections>
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</configSections>
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" />
</federationConfiguration>
</system.identityModel.services>
<system.identityModel>
<identityConfiguration>
<claimsAuthorizationManager type="wApp.ClaimManager, wApp" />
</identityConfiguration>
</system.identityModel>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".logsstdout" forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>
Как вы можете видеть, я добавил все необходимые разделы. Тот же код и конфигурация хорошо работают в моих проектах MVC 5, а также в моем проекте Web Api. Есть ли что-то другое, что нужно сделать в Asp.Net Основные проекты?
Я также добавил необходимые ссылки на DLL в проект Core 1.0 MVC, а также продублировал те же разделы конфигурации в файле App.config в проекте core 1.0 MVC. Все еще получаю ту же ошибку.
Чего мне не хватает?
Комментарии:
1. Как вы настраиваете идентификатор в своем классе запуска? .Net Core не считывает файл web.config
2. AFAIK, ASP .NET Core полагается на
project.json
свой конфигурационный файл,web.config
ниapp.config
один из них не использовался. Добавьте всеIdentityModel
ссылки в файл проекта и убедитесь, что соответствующие зависимости доступны.3. @TetsuyaYamamoto вы имеете в виду appsettings.json? Я не знаю, как преобразовать конфигурационные разделы в файле конфигурации в формат json. Я не могу найти ни одного примера. Если web.config не работает, то почему он предоставляется в проекте при создании нового проекта aspnetcore?
4. @aguafrommars у вас есть пример настройки идентификатора в классе запуска? также пример файла конфигурации, который потребуется .NET Core для того же?
5. Возможно, это может помочь: docs.asp.net/en/latest/fundamentals/configuration.html . Оба
appsettings.json
иproject.json
содержимое важны в контексте ASP .NET Core, попробуйте вместо этого добавить ссылку на сборку к этим файлам, используя XML config.
Ответ №1:
ClaimsPrincipalPermission и WIF/System.IdentityModel вообще не является частью .NET Core. Я удивлен, что даже компилируется.
Из комментариев видно, что вы анализируете JWT, предположительно, с промежуточным программным обеспечением JWT bearer token.
Итак, все идентификаторы в ASP.NET Ядром являются исковые требования. Вы можете использовать простые проверки на основе утверждений или, более полно, кодировать выраженные политики, которые дают гораздо больше гибкости.
Комментарии:
1. Что тогда эквивалентно? У меня есть веб-api, который использует подход к аутентификации на основе утверждений. Я планировал повторно использовать тот же подход и в основном проекте, чтобы я мог совместно использовать библиотеки и использовать один и тот же секретный ключ в обоих проектах. проект web api уже используется. Должен ли я отказаться от использования asp.net полностью использовать ядро и просто перейти на MVC 5, если еще нет эквивалента?
2. Что вы имеете в виду на основе утверждений? Вы имеете в виду WS-Fed и SAML или просто какую-то идентификацию, основанную на ClaimsPrincipal.
3. В шаблонах так много разных проектов на выбор, и нет четкого пути между тем, что выбрать, а чего избегать. Документы кажутся неполными или устаревшими
4. Если вы не можете объяснить, что вы на самом деле хотите здесь, то я не могу дать вам никаких указаний. Похоже, что из конфигурации вы хотите федерацию, но федерацию с чем ? И какие протоколы используются?
5. Решил эту проблему, поместив все разделы web.config в app.config