system.IdentityModel не обнаружен в web.config

#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