2016-08-22 5 views
8

Мое веб-приложение Asp.Net Core mvc требует проверки подлинности Windows. В Developpement на IIS Express, все работает отлично, благодаря этой установкеЯдро MVP-приложения Asp.Net Проверка подлинности Windows в IIS

launchSettings.json

"iisSettings": { 
    "windowsAuthentication": true, 
    "anonymousAuthentication": false, 
    "iisExpress": { 
     "applicationUrl": "http://localhost:61545/", 
     "sslPort": 0 
    } 
    } 

При развертывании в IIS, я получаю пустую страницу. Запрос на мой сайт получит код ошибки 500.

Я попытался добавить эту конфигурацию в Startup.cs, как описано here, без успеха.

services.Configure<IISOptions>(options => { 
     options.ForwardWindowsAuthentication = true; 
    }); 

Когда я просматриваю параметры аутентификации непосредственно в IIS, активируется аутентификация Windows.

Я нашел сообщение о пакете под названием Microsoft.AspNetCore.Server.WebListener, другие о внедрении пользовательского промежуточного программного обеспечения. Я не могу себе представить, что эта основная функция требует больших усилий для работы. Я что-то упускаю ?

+0

Вы уверены, что возникла ошибка из-за аутентификации? Если да, то что такое сообщение об ошибке? –

+0

Что входит в ваш журнал FREB? https://www.iis.net/learn/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis – blowdart

+0

Вы можете попробовать сыграть с идентификаторами пула приложений в диспетчере IIS: http : //www.iis.net/learn/manage/configuring-security/application-pool-identities –

ответ

12

launchSettings.json файл используется только VS. Когда вы публикуете свое приложение (или запускаете без VS), launchSettings.json не используется. Когда вы запускаете IIS/IISExpress, вам просто нужно убедиться, что ваш web.config имеет правильные настройки. В вашем случае атрибут forwardWindowsAuthToken в файле web.config отсутствует или установлен в false. Для работы Windows должно быть установлено значение true. Пример web.config перед публикацией будет выглядеть так:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/> 
    </handlers> 
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/> 
    </system.webServer> 
</configuration> 
+2

Это очень полезно, спасибо за информацию. Возможно, вам потребуется создать файл web.config вручную, если он не существует, что произошло со мной, используя VS 2017, как описано здесь: [https://developercommunity.visualstudio.com/content/problem/26751/publish-aspnet -core к МИС-с-окнами-authentica.html] (https://developercommunity.visualstudio.com/content/problem/26751/publish-aspnet-core-to-iis-with-windows-authentica.html) –

1

Вам необходимо проверить web.config в директории проекта. Эти настройки помогли мне.

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/> 
    </handlers> 
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/> 
    <security> 
     <authentication> 
     <anonymousAuthentication enabled="false" /> 
     <windowsAuthentication enabled="true" /> 
     </authentication> 
    </security> 
    </system.webServer> 
</configuration> 
Смежные вопросы