Nano Hash - криптовалюты, майнинг, программирование

В Aspnet Core 1.1 отсутствует проверка подлинности Windows при публикации

Я заметил, что при публикации моего нового проекта Aspnet Core 1.1 (только что обновленного до VS 2017) в файле web.config всегда отсутствует forwardWindowsAuthToken="true".

Дополнительная информация и исправление, которое я нашел, было здесь:

https://developercommunity.visualstudio.com/content/problem/26751/publish-aspnet-core-to-iis-with-windows-authentica.html

Я также попытался добавить:

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

к моему методу ConfigureServices, но это не помогло.

Итак, мой вопрос: есть ли способ заставить это работать правильно? Какой-то аргумент командной строки или другой способ его автоматизации, кроме ручного редактирования web.config после его развертывания?

Я не думаю, что это имеет значение, но это ядро ​​asp.net 1.1, ориентированное на 4.6.2, а не на ядро.

Редактировать: Чтобы уточнить, добавление forwardWindowsAuthToken="true" работает, проблема заключается в том, что он не добавляется автоматически, как в наших проектах на базе ядра 1.0. Мне интересно, есть ли способ легко автоматизировать создание web.config.


  • Как вы размещаете свое приложение? ИИС? Пустельга через службу Windows? 18.05.2017
  • @DOMZE мы используем IIS 19.05.2017

Ответы:


1

Итак, я без проблем использую IIS/Kestrel на .NET Core 1.1, скомпилированный с полной платформой 4.6.2 и аутентификацией Windows. Во-первых, в моем проекте есть файл web.config с моей конфигурацией, который публикуется вместе с моим приложением, поэтому мне не нужно каждый раз перезаписывать его, он является частью моего проекта и содержит довольно много полезных для меня настроек, если я не понял, вы могли бы использовать и это. Тогда, в моем случае, forwardWindowsAuthToken="true" достаточно, чтобы иметь возможность получить аутентификацию Windows с помощью фрагмента кода, подобного этому HttpContext.User.Identities.FirstOrDefault(id => id.GetType() == typeof(WindowsIdentity));

Я думаю, что вам не хватает настроек на уровне IIS, forwardWindowsAuthToken недостаточно, вы также должны сообщить IIS, что это конкретное веб-приложение использует аутентификацию Windows. Для этого я настраиваю часть аутентификации веб-приложения, включаю аутентификацию Windows и выбираю подходящего поставщика (в моем случае согласовываю). Если вы просто включите анонимную аутентификацию, то IIS не будет запрашивать у клиента личность пользователя (используя протокол аутентификации, такой как согласование и билет kerberos), и не будет передавать ее вашему приложению .NET Core. введите здесь описание изображения

19.05.2017
  • Добавление forwardWindowsAuthToken="true" работает отлично, проблема в том, что он не добавляется автоматически в web.config. Как только мы добавим его, он отлично работает. Я предполагаю, что мы могли бы просто включить web.config, но мне нравится, чтобы он автоматически генерировался во время развертывания, просто хотелось бы, чтобы он правильно включал forwardWindowsAuthToken="true", как это было в версии 1.0. 19.05.2017
  • Я не знаю, почему вы хотите, чтобы он автоматически генерировался. Я лично использую его для настройки поведения IIS и использую его в своем проекте. Я использую его, чтобы определить requestTimeout, установить путь к stdoutLogFile или установить ASPNETCORE_ENVIRONMENT (разработка, подготовка, производство...). Я не понимаю, как автоматически сгенерированный web.config может угадать, что мне нужно. Возможно, я ошибаюсь, но я не считаю плохой практикой иметь web.config в вашем проекте, я бы наоборот подумал, что так и должно быть. 19.05.2017
  • Задолго до того, как он будет автоматически генерироваться правильно (1.0), и я предполагаю, что у них будет больше функций и тому подобного, которые будут автоматически помещены в файл, поэтому автоматическое генерирование - хорошая функция, и почему они изначально удалили ее вместо всегда один, как в предыдущих версиях asp.net. Использование web.config на данный момент является хорошим решением, но было бы неплохо иметь полное решение этой проблемы. 20.05.2017
  • Я предполагаю, что это зависит от вашей точки зрения и ваших требований, но вы также можете увидеть это с другой стороны: они исправили это, сделав его более безопасным, не позволяя устанавливать какую-либо личность по умолчанию. Например, в моем проекте по умолчанию я предпочитаю, чтобы идентичность не определялась, если я не решу активировать идентичность Windows для передачи, что может дать доступ к некоторому ресурсу, если я не буду осторожен, игнорируя удостоверения, исходящие от проверки подлинности Windows. 20.05.2017
  • Конечно, но я прямо заявляю, что мне нужна аутентификация Windows с помощью: services.Configure<IISOptions>(options => { options.ForwardWindowsAuthentication = true; }); так что не следует ли смотреть на это и, таким образом, соответствующим образом обновлять web.config? 22.05.2017
  • Разбор вашего кода для создания web.config соответственно выглядит слишком сложным для меня. Наоборот, можно было бы ожидать, что эта строка перезапишет значение, содержащееся в web.config, но, по-видимому, это не так. Во всяком случае, в вашем случае, но это только мое мнение, добавление пользовательского web.config в проект кажется мне сильным решением, а не только обходным путем. Давайте посмотрим, думает ли другой человек из SO иначе и может ли предоставить вам другое решение. 22.05.2017
  • Вы видели это? github.com/aspnet/AspNetCoreModule/issues/ 23.05.2017
  • Это объясняет, непосредственно из разработки MS, то, что вы отметили. 23.05.2017
  • Да, я написал исходную проблему на github :) спасибо за внимание! 23.05.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..