2015-02-16 2 views
16

Я создаю приложение интрасети в ASP.NET 5, MVC 6. Я хочу знать, как включить проверку подлинности Windows.? Шаблон проекта по умолчанию поддерживает только отдельные учетные записи пользователей.Проверка подлинности Windows в asp.net 5

+1

Если вы планируете размещать свой сайт в IIS, вы можете настроить аутентификацию Windows в IIS –

+1

. Как насчет других параметров, таких как самостоятельный хостинг.? –

+1

Напишите промежуточное программное обеспечение. Я думаю, –

ответ

0

Необходимо настроить IIS Express вручную (в VS2015 CTP6). Для этого отредактируйте файл applicationhost.config. (C: \ Users \ имя пользователя \ ваши документы \ IISExpress \ Config \ Applicationhost.config)

В конфигурации тега добавьте это:

<location path="{your site name}"> 
    <system.webServer> 
     <security> 
      <authentication> 
       <windowsAuthentication enabled="true" /> 
       <anonymousAuthentication enabled="false" /> 
      </authentication> 
     </security> 
    </system.webServer> 
</location> 
4

С хостинга IIS, вы можете добавить файл web.config в ваш каталог wwwroot с настройками IIS для вашего приложения.

web.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
     <security> 
      <authentication> 
       <windowsAuthentication enabled="true" /> 
       <anonymousAuthentication enabled="false" /> 
      </authentication> 
     </security> 
    </system.webServer> 
</configuration> 
1

Я сделал все, что я нашел в Интернете, никто не работал. Итак, я посмотрел в файлы конфигурации САШ 4.5, и я увидел, что он использует:

<IISExpressAnonymousAuthentication>disabled</IISExpressAnonymousAuthentication> 
<IISExpressWindowsAuthentication>enabled</IISExpressWindowsAuthentication> 

на .csproj файл, я просто копируется в файл .xproj САШ 5, и она работала.

5

В дополнение к другим ответам здесь, которые предназначены только для служб IIS, вы можете включить проверку подлинности Windows в самообслуживаемом проекте ASP.NET 5 (протестированном против бета-версии 7 и бета-версии 8), добавив следующее в Startup.cs Configure метод, перед app.UseMvc или подобное, что вы хотите защитить:

ОБНОВЛЕНИЕ дЛЯ БЕТА 8

// If we're self-hosting, enable integrated authentication (if we're using 
// IIS, this will be done at the IIS configuration level). 
var listener = app.ServerFeatures.Get<WebListener>(); 
if (listener != null) 
{ 
    listener.AuthenticationManager.AuthenticationSchemes = 
     AuthenticationSchemes.NTLM; 
} 

ПРЕДЫДУЩИЙ ОТВЕТ нА БЕТА 7

// If we're self-hosting, enable windows/integrated authentication. 
// For IIS, this needs to be configured in IIS instead, and the 
// following will have no effect. 
if ((app.Server as ServerInformation) != null) 
{ 
    var serverInformation = (ServerInformation)app.Server; 
    serverInformation.Listener.AuthenticationManager.AuthenticationSchemes = 
     AuthenticationSchemes.NTLM; 
} 

Адаптировано для официальных лиц MusicStore example.

Если вы отлаживаете использование Visual Studio 2015 с помощью IIS Express, вы можете включить проверку подлинности Windows с помощью флажка на странице свойств отладки для проекта в настоящее время, а не возиться с файлом applicationhost.config. Я не мог заставить решение web.config работать для отладки IIS Express, это порождает ошибку в том, что конфигурация не действительна на этом уровне. Примечание это в настоящее время не работает в бета-8 - см ответ this issue

7

Марка по-прежнему действует в ASP.Net RC1. Есть некоторые дополнительные шаги, чтобы связать все это вместе (я не хватает репутации комментировать его решения):

  1. Установка WebListener from NuGet
  2. Добавьте следующие usings в Startcup.cs:

    using Microsoft.AspNet.Http.Features; 
    using Microsoft.Net.Http.Server; 
    
  3. Добавить Mark's code snippet в метод настройки до приложения.UseMvc:

    // If we're self-hosting, enable integrated authentication (if we're using 
    // IIS, this will be done at the IIS configuration level). 
    var listener = app.ServerFeatures.Get<WebListener>(); 
    if (listener != null) 
    { 
        listener.AuthenticationManager.AuthenticationSchemes = 
        AuthenticationSchemes.NTLM; 
    } 
    
  4. Для отладки это, вы должны add the WebListener run target в project.json, а Марк отметил в другой ответ:

    "commands": { 
        "weblistener": "Microsoft.AspNet.Server.WebListener --config hosting.ini", 
        "web": "Microsoft.AspNet.Server.Kestrel" 
    }, 
    
  5. Пика Веб приемник вместо IIS Express в сети (Kestrel) для отладки ваше приложение.

1

Поскольку вы создаете новое приложение, вы можете изменить тип аутентификации, щелкнув Change Authentication. Это вызовет выбор, в котором вы можете изменить тип типа на Аутентификацию Windows.

enter image description here enter image description here

1

Для RC1 & IISExpress из пустого веб-приложения:

  • правой кнопкой мыши веб-проекта, выберите Properties
  • вкладку Нажмите Debug, проверьте Enable Windows Authentication

Thi s влияет ~/Properties/launchSettings.json следующим образом:

"windowsAuthentication": true, 
"anonymousAuthentication": false, 
1

Если вы хотите включить проверку подлинности Windows на текущем веб-проекта:

В обозревателе решений щелкните правой кнопкой звоном на веб-сайте и выберите «Свойства окна»

Set «Анонимная проверка подлинности» в «Disabled»

и установить «Проверка подлинности Windows»

Запустите проект и каждый вещь будет хорошо.

5

Файл $(ProjectDir)\Properties\launchSettings.json запустит Visual Studio для генерации web.config файла при отладке соответственно для IISExpress, что будет иметь <authentication/> узел установлен в соответствии с параметрами запуска.

Ниже приведен пример launchSettings.json

{ 
    "iisSettings": { 
    "windowsAuthentication": true, 
    "anonymousAuthentication": false, 
    "iisExpress": { 
     "applicationUrl": "http://localhost:65070/", 
     "sslPort": 0 
    } 
    }, 
    "profiles": { 
    "IIS Express": { 
     "commandName": "IISExpress", 
     "launchBrowser": true, 
     "environmentVariables": { 
     "Hosting:Environment": "Development" 
     } 
    }, 
    "web": { 
     "commandName": "web", 
     "environmentVariables": { 
     "Hosting:Environment": "Development" 
     } 
    } 
    } 
} 

Но также использовать расширение app.UseIISPlatformHandler(); вместо манипулирования слушателя. Расширение установит промежуточное программное обеспечение, которое автоматически запросит NTLM и переведет соответствующие дескрипторы из IIS.

При развертывании в IIS, если вы используете WebListener, вы должны добавить узел authentication самостоятельно на web.config. Если вы используете HttpPlatformHandler (который я рекомендую лично) и проксирование к пустельге, добавьте forwardWindowsAuthToken="true" в узел httpPlatform в web.config.

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