Проверка подлинности Windows в asp.net 5

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

Ответы

Ответ 1

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

  • Установите WebListener из NuGet
  • Добавьте следующие сведения в Startcup.cs:

    using Microsoft.AspNet.Http.Features;
    using Microsoft.Net.Http.Server;
    
  • Добавить Отметить фрагмент кода в методе Configure до app.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;
    }
    
  • Чтобы отладить это, вам нужно добавить цель запуска WebListener в project.json, поскольку Mark отметил в другом ответе:

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

Ответ 2

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

ОБНОВЛЕНИЕ ДЛЯ BETA 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.

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

Ответ 3

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

Ниже приведен пример 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 node к web.config. Если вы используете HttpPlatformHandler (который я рекомендую лично) и проксирование на пустельгу, добавьте forwardWindowsAuthToken="true" в httpPlatform node в web.config.

Ответ 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>

Ответ 5

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

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

в файле .csproj, я просто скопировал файл .xproj aspnet 5 и работал.

Ответ 6

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

введите описание изображения здесь введите описание изображения здесь

Ответ 7

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

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

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

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

Ответ 8

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

В проводнике решений щелкните правой кнопкой мыши на веб-сайте и выберите "Окно свойств"

Установите "Анонимная аутентификация" на "Отключено"

И установите "Аутентификация Windows"

Запустите проект, и все будет хорошо.

Ответ 9

Вам нужно настроить вручную 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>