1с ошибка аутентификации nt authority iusr
дело в том, что я добавил NT AUTHORITYIUSR в список логинов сервера и в список пользователей базы данных. Для сервера, я предоставил пользователю публичную роль, а для базы данных я предоставил db_datareader разрешения.
Я также предоставил то же самое для NT AUTHORITYNETWORK SERVICE , под которым выполняется пул приложений.
веб-приложение размещается в IIS7, если это имеет значение. Проблема повторяется, когда БД и IIS находятся на одной физической машине.
фокус здесь в том, что NT AUTHORITY\NETWORK SERVICE фактически отображается в базе данных как DOMAINNAME\MACHINENAME$ (обратите внимание на $ знак!). То есть, когда вы пересекаете границу машины с вашего веб-сервера на SQL Server, SQL Server видит учетную запись машины, если вы используете NETWORK SERVICE или LOCAL SYSTEM учетные записи. Если вы используете любую другую учетную запись, не являющуюся доменной, SQL Server не получит ваши учетные данные.
IUSR используется для анонимных веб-сайтов и не может пройти по проводу к SQL Server. Вы можете найти способ, чтобы это сработало, если вы делаете все на одной машине, но я никогда не узнаю, потому что я никогда не буду делать это таким образом. ;-)
Я бы предложил создать отдельную (желательно доменную) учетную запись и указать ее в строке подключения (обычно в интернете.конфиг) Затем вы можете ограничить разрешения на веб-сервере, что эта учетная запись может и не может делать. Затем вы можете предоставить этой учетной записи необходимые разрешения в SQL server.
У меня была такая же проблема, и я решил ее, изменив пул приложений.
в случае, если это кому-то помогает, в интернете.config я добавил для этой ошибки, чтобы уйти (в разделе )
вместо Integrated Security=True; в строке подключения, просто используйте имя пользователя и пароль user=sa; pwd=mypassword;
простое решение-проверить свою сеть.файл config и убедитесь, что один из них является частью строки подключения к БД:
эта проблема отображается при восстановлении новой базы данных в последней базе данных.
чтобы решить эту проблему, вы должны перейти к sqlserver, затем security, а затем снова установить apppool.
Добрый день. Имеются 12 баз с абсолютно одинаковой конфигурацией. Все базы расположены на одном сервере 1С. У каждой базы опубликован вебсервис на сервере 1С, у всех вебсервис одинаковый. Если строку со ссылкой на wsdl схему ввести в браузер с компьютера на котором опубликованы вебсервисы(т.е. на сервере 1С, где установлен IIS), то схема открывается. Если же с другого расположенного в одной локальной сети, то схема открывается через раз, просит ввести логин и пароль. Журнал регистрации пишет "Сеанс. Ошибка аутентификации, Пользователь ОС: NT AUTHORITY\ANONYMOUS LOGON". Причем происходит это на разных базах. После того как перезапущу IIS, какая-то база(в случайном порядке) может открыть wsdl схему, а другая перестать открывать. Пробовал это делать с разных ПК и под разными пользователями. Версия платформы 8.3.7.1917, IIS 8.5. Подскажите, может кто сталкивался с подобной проблемой.
Проблему решил следующим образом:
В кластере серверов на сервере на который было перенаправление указал в Требовании назначения функциональности параметры: Объект требования: Клиентское соединение с ИБ; Тип требования: Не назначать; ИБ: для всех; Значение дополнительного параметра: WebServerExtension.
После этого нужно кликнуть правой кнопкой мышки на кластере и выбрать в контекстном меню пункт Применить требования назначения функциональности (полное). После этого на всякий случай перезапустил сервер. После выше описанных манипуляций кластер перестал перенаправлять обработку запросов к вебсервисам и стал их обрабатывать на одном сервере.
Еще одно уточнение, сервер 1c это кластер серверов и авторизация не проходит в тот момент когда сервер 1С перенаправляет запрос на другой сервер отличный от IIS.
Проблему решил следующим образом:
В кластере серверов на сервере на который было перенаправление указал в Требовании назначения функциональности параметры: Объект требования: Клиентское соединение с ИБ; Тип требования: Не назначать; ИБ: для всех; Значение дополнительного параметра: WebServerExtension.
После этого нужно кликнуть правой кнопкой мышки на кластере и выбрать в контекстном меню пункт Применить требования назначения функциональности (полное). После этого на всякий случай перезапустил сервер. После выше описанных манипуляций кластер перестал перенаправлять обработку запросов к вебсервисам и стал их обрабатывать на одном сервере.
(4) oldfornit,
Извините, что долго отвечал, мне почему-то оповещения не приходят. Как не странно я начал читать ИТС, вот эту главу Глава 2. Клиент серверный вариант работы . Прочитал все до конца. Понял, что сквозная аутентификация не проходит когда сервер 1С отличатся от сервера IIS физически. Это общеизвестная проблема, лично я решения не нашел. Все что было написано в интернете перепробовал, не помогло. В итоге пришел к выводу, что нужно как-то запретить кластеру 1С обрабатывать запросы к вебсервису на сервере отличном от IIS. Собственно, выше описанная глава помогла. Только вот в ней почему-то не написано про то, что нужно применить требование назначение функциональности. Про это написано тут 5.2.4.3. Вызов операции применения
(6) ni032mas, спасибо. Эта проблема случайно не озвучивается иногда как "проблема двух хопов при ntlm-аутентификации"?
(8) oldfornit,
Похоже на то Double-hop authentication: Why NTLM fails and Kerberos works
Вроде как нужно делегирование настроить в AD, сам не настраивал, но коллеги пробовали и не помогло и тут не помогло. В общем, в следующий раз обязательно попробую настроить делегирование и отпишусь.
(9) ni032mas, в случае ms sql server нам помогло вот это , раздел "Настройка службы SQL Server для динамического создания имен SPN для экземпляров Microsoft SQL Server"
(3) ni032mas, можно поподробнее: что, куда, почему, а так же прочие ссылки "откуда есть пошла" такая идея: WebServerExtension - это что?
Спасибо.
(5) Win98,
В целом, вся инфа на ИТС, ссылки выше. Конкретно про параметр WebServerExtension это: параметр, необходимый кластеру серверов для принятия решения в случае соединения с информационной базой через веб-сервер: веб-клиент, тонкий клиент в случае подключения через веб-сервер, Web-сервис. Картинки со своими настройками прилагаю.
я боролся с этим в течение 2 дней, не приближаясь к решению. Я прочитал 20-30 потоков alteast и все еще не могу решить эту проблему.
пожалуйста, помогите мне.
я добавил пользователя в логины безопасности, подключенные к базе данных, к которой я пытаюсь подключиться
это connectionstring I использовать:
не удается открыть базу данных "Фаэтон.mdf", запрошенный логином. Ошибка входа в систему.
ошибка входа для пользователя "NT AUTHORITYNETWORK SERVICE".
Мне кажется, вы все еще пытаетесь подключиться к базе данных на основе файлов, имя "Фаэтон.mdf " не соответствует вашему новому имени базы данных sql "Фаэтон."
надеюсь, что это помогает.
ошибка входа для пользователя "NT AUTHORITY\NETWORK SERVICE". Причина: не удалось открыть явно указанную базу данных. [Клиент: локальная машина]
решение, которое решило мою проблему, было:
- войдите в SqlExpress через SQL Server Management Studio
- перейти в каталог "безопасность" базы данных
- щелкните правой кнопкой мыши каталог пользователей
- Выберите "Новый Пользователь. "
- добавить "NT AUTHORITY\NETWORK SERVICE" в качестве нового пользователя
- в области членство в роли данных выберите db_owner
- нажмите OK
вот скриншот выше:
"ошибка входа для пользователя" NT AUTHORITY\NETWORK SERVICE"."после гранта разрешение входа в сеть НТ\службы'
в вашей базе данных "Фаэтон".
Мне понравилось решение Джеда, но проблема в том, что каждый раз, когда я строил свой проект в режиме отладки, он развертывал мой проект базы данных и снова удалял пользователя. поэтому я добавил этот сценарий MySQL в сценарий после развертывания. он практически делает то, что сказал Джед, но создает пользователя каждый раз, когда я развертываю.
Вы сказали, что он работал нормально, когда вы использовали SQL Express edition. По умолчанию выпуски express создают именованный экземпляр и запускаются в NT Authority\Network Service.
SQL Server STD по умолчанию установите экземпляр по умолчанию и запустите в NT Authority\SYSTEM.
У вас есть как полная версия SQL edition & Express edition, установленная на одном компьютере?
возможно, где-то строка соединения все еще ссылается на именованный экземпляр 'SQLEXPRESS', а не экземпляр по умолчанию, созданный полной версией.
также где определена строка подключения? В IIS или вашем коде? Убедитесь, что если определено во многих местах, все указывают на один экземпляр SQL и базу данных.
также попробуйте просмотреть подробную ошибку, присутствующую в журналах ошибок SQL Server. Ошибка в журнале событий не завершена по причинам безопасности. Это также поможет вам узнать, было ли установлено соединение к правильному SQL Server.
также убедитесь, что машина, на которой установлен SQL, доступна и IIS пытается получить доступ к той же машине. В моей компании иногда из-за неправильного разрешения имен запрос терпит неудачу, так как на большинстве наших компьютеров установлен SQL, и запрос попадает в неправильный SQL Server.
убедитесь, что база данных существует в SQL Server. Имя, отображаемое в разделе Базы данных в среде SQL Management Studio, должно совпадать это в строке подключения.
требуется вход в систему SQL Server DOMAIN\machinename$ . Это как призвание NT AUTHORITY\NETWORK SERVICE отображается в SQL Server (и файловых серверах и т. д.)
лучший способ-создать пользователя для вашего приложения и назначить разрешения, подходящие для этого пользователя. Не используйте "NT AUTHORITY\NETWORK SERVICE" как ваш пользователь, у него есть своя уязвимость, и это пользователь, который имеет разрешения на так много вещей на уровне ОС. Держитесь подальше от этого встроенного пользователя.
Я использую Entity Framework для повторного заполнения моей базы данных, и пользователи переопределяются каждый раз, когда я создаю свою базу данных.
Я другие проекты, работающие на IIS локально, и они работают без проблем (но они не используют Entity Framework).
используя регистратор событий я вижу ошибки, как показано ниже:
обновление: Вы можете прочитать в ресурсах по этому вопросу, что разрешения должны быть предоставлены на MS SQL 2008 вручную, как объясняет arift в своем ответе. При использовании IIS 7.5 и MS SQL 2008 R2 установка разрешения вручную не требуется.
похоже, что не удается открыть соединение с SQL Server.
в SSMS под сервером разверните Security, затем щелкните правой кнопкой мыши Logins и выберите " New Login. ".
в диалоговом окне "новый вход" введите пул приложений в качестве имени входа и нажмите "ОК".
затем вы можете щелкнуть правой кнопкой входа для пула приложений, выберите Свойства и выберите "отображение пользователя". Проверьте соответствующую базу данных и соответствующие роли. Я думаю, вы могли бы просто выбрать db_datareader и db_datawriter , но я думаю, вам все равно нужно будет предоставить разрешения на выполнение хранимых процедур, если вы сделаете это через EF. Вы можете проверить детали для ролей здесь.
вы можете изменить ApplicationPoolIdentity из IIS7 - > пулы приложений - > Дополнительные параметры.
В разделе ApplicationPoolIdentity вы найдете локальную систему. Это заставит ваше приложение работать под NT AUTHORITY\SYSTEM , который является существующим логином для базы данных по умолчанию.
Edit: перед применением этого предложения вы должны отметить и понять последствия для безопасности.
убедитесь, что у вас есть.
в строке подключения
Я решил эту проблему, используя sql как следующее изображение.
если в строку подключения указан:
а в строку подключения есть:
SQL Server будет использовать проверку подлинности Windows, поэтому значения подключения будут игнорироваться и переопределяться (IIS будет использовать учетную запись Windows, указанную в профиле пользователя Identity). подробнее здесь
то же самое, если в строку подключения там есть:
поскольку для подключения к серверу баз данных будет использоваться проверка подлинности Windows. подробнее здесь
выполнить этот SQL-скрипт
Я ненавижу ApplicationPoolIdentity. Я всегда устанавливаю учетную запись пользователя Windows в качестве учетной записи в AppPools.
Не используйте интегрированную безопасность. Использовать User pwd=yourPwd;
Это решает проблему.
Первое, что вам нужно очистить, если вы используете аутентификацию windows, и вы не упоминаете пароль пользователя в строке подключения, то:
Что происходит при запуске кода через localhost: при запуске тестового клиента wcf из localhost он сможет взаимодействовать с базой данных, поскольку локальное приложение режима отладки вызывает базу данных службой вашей учетной записи. Таким образом, он имеет доступ к базе данных, потому что devenv.exe работает под вашим пользователем счет.
но при развертывании веб-службы в IIS. Теперь поймите, что эта служба работает под IIS, а не под вашей учетной записью. Таким образом, необходимо назначить права доступа к службе IIS для доступа к sql server для проверки подлинности windows. Здесь ваша веб-служба не сможет связаться с SQL server из-за проблемы с правами доступа и входа в систему для пользователя_______ (сюда придет ваш пользователь)
поэтому, если вы используете проверку подлинности windows для подключения базы данных, вы просто нужно изменить параметры пула приложений IIS. Необходимо изменить удостоверение пула приложений IIS на локальную систему.
теперь откройте SQL server management studio: откройте run - > затем введите ssms, затем нажмите ok в ssms, войдите в систему с помощью учетной записи проверки подлинности windows. откройте вкладку Безопасность разверните вкладку логины, после чего вы сможете просмотреть свою учетную запись.
теперь откройте свойства вашей учетной записи перейти к userMapping затем выберите базу данных, которую вы хотите подключить затем проверьте службы членства в ролях, которые вы хотите использовать для выбранной базы данных нажимать OK. (Для сетевых служб, т. е. интранет пользователи вам нужно настроить выше параметры для NT AUTHORITY\SYSTEM user тоже)
добавить Trusted_Connection=True; свойство в строке подключения. Сохраните его и разверните веб-службу. Перезапустите пул приложений.
вы сможете подключить базу данных.
перейдите в iis - > пулы приложений - > найдите пул приложений, используемый в application
выберите пул приложений, используемый для приложения щелкните правой кнопкой мыши выберите Дополнительные настройки
выберите идентификатор пула приложений
выберите встроенный как локальная система и нажмите ok
Я нашел введя в интернете.config исправил это для меня:
Я вижу другие ответы о создание имени пользователя AppPool в SQL DB или просто использовать SQL Auth. Оба будут правильными, если вы не хотите захватывать или защищать отдельных пользователей Windows внутри SQL.
как указано,Не используйте проверку подлинности Windows, Используйте проверку подлинности SQL Server
кроме того, если вы создали соединение с помощью диалогового окна "подключение к серверу", обязательно проверьте соединения в интернете.конфиг. Вероятно, вы создали/изменили соединение, и оно было сохранено как доверенное соединение в интернете.конфиг. Просто используйте эту аутентификацию
установка идентификатора только делает эту работу на моих страницах.
Cassini запускает веб-сайт в качестве собственного удостоверения пользователя при запуске приложения Visual Studio. IIS запускает веб-сайт как идентификатор пула приложений. Если идентификатору пула приложений не предоставлен доступ к базе данных, возникают ошибки.
IIS представил идентификатор пула приложений для повышения безопасности. Вы можете запускать веб-сайты под идентификатором пула приложений по умолчанию, или создавать новый пул приложений с собственным именем, или создавать новый пул приложений с собственным именем, который работает под учетной записью пользователя (обычно учетная запись домена.)
в сетевых ситуациях (которые не находятся в Azure) вы можете запустить новый пул приложений под учетной записью пользователя домена Active Directory; я предпочитаю это учетной записи компьютера. Это дает гранулированную безопасность и гранулированный доступ к сетевым ресурсам, включая базы данных. Каждый веб-сайт работает в другом пуле приложений (и каждый из них работает под своей учетной записью пользователя домена).
продолжайте использовать встроенную Безопасность Windows во всех строках подключения. В SQL Сервер, добавьте пользователей домена в качестве Логинов и предоставьте разрешения базам данных, таблицам, SP и т. д. на основе сайта. Например. DB1, используемый Website1, имеет логин для User1, поскольку Website1 работает в пуле приложений как User1.
одна проблема с развертыванием из встроенной БД Visual Studio (например, LocalDB) и встроенного веб-сервера в рабочую среду связана с тем, что SID пользователя разработчика и его ACL не должны использоваться в безопасной рабочей среде. Корпорация Майкрософт предоставляет инструменты для развертывания. Но жаль бедного разработчика, который привык ко всему, что просто работает из коробки в новом easy VS IDE с localDB и localWebServer, потому что эти инструменты будут трудно использовать для этого разработчика, особенно для такого разработчика, которому не хватает поддержки SysAdmin и DBAdmin или их специализированных знаний. Тем не менее развертывание в Azure проще, чем в корпоративной сети, упомянутой выше.
Если у вас есть строка подключения, добавленная в вашем интернете.config, убедитесь, что" Integrated Security=false; " поэтому он будет использовать идентификатор и пароль, указанные в интернете.конфиг.
вы сделали то, что @Teddy рекомендуется, и вы еще получаю ту же ошибку?
убедитесь, что вы меняете параметры пула приложений, который соответствует вашему виртуальному каталогу, а не родительскому серверу. Каждый виртуальный каталог имеет свой собственный AppPool и не наследуется.
в DefaultAppPool set NetworkService в свойстве Identity и в Sql Server добавьте пользовательскую сетевую службу и дайте ей соответствующие разрешения для вашей базы данных, это очень хорошо работает для меня, я тестировал локально, но я думаю, что это лучшая конфигурация для подключения с любого другого компьютера в сети. когда вы устанавливаете LocalSystem в идентификаторе в IIS, это хорошо работает, и нет необходимости создавать какого-либо другого пользователя в Sql Server, но я думаю, что это не будет работать в сети окружающая среда.
Разработан Web.Узла в Visual Studio 2013 в экспресс База данных, созданная в SQL Server 2012 Express Выполненный тест с использованием встроенного IIS Express (рабочий) Изменено для использования IIS Local (на странице свойств-веб-параметр) Ran тест с Fiddler Полученная ошибка-невозможно открыть базу данных для поставщика. цитирование 'APPPOOL\DefaultAppPool'
решение, которое работает.
в среде SQL Server Management Studio
щелкните правой кнопкой мыши на папке безопасности (под SQL Server engine так относится ко всем таблицам) Щелкните правой кнопкой мыши на пользователе и добавьте "IIS APPPOOL\DefaultAppPool" В securables в столбце "Grant" проверьте параметры, которые вы хотите дать. Что касается вышеизложенного, если вы DBA, вы, вероятно, знаете и хотите контролировать что те варианты. Если вы похожи на меня, разработчик просто хотел проверить ваша служба веб-API, которая также получает доступ к SQL Server через EF 6 в стиле MVC просто проверьте все. :) Да я знаю, но это сработало.
Если вы добавляете новый логин, убедитесь, что в разделе свойства сервера ( rightclick -> свойства)/безопасность режим аутентификации установлен на sqlserver и windows не только windows.
добавить "все" под безопасность. Если вы добавили сервер и пользователей, входящих в базу данных, то это то, что вам не хватает. Надеюсь, это поможет.
для записи, если вы столкнулись с этой ошибкой после переключения с LocalDB до SQLEXPRESS , убедитесь, что база данных уже esists в SQLEXPRESS . Это можно проверить в Management Studio.
у меня была такая же проблема при использовании Entity Framework после переключения на SQLEXPRESS from LocalDB . Мне пришлось бежать
я столкнулся с аналогичной проблемой при размещении приложения в IIS
решение
Я меняю идентификатор пула и его работу me
Я сделал именно так, как сказал @JeffOgata, но я получил ошибку:
после добавления пользователя с именем IIS APPPOOL\DefaultAppPool все работало.
думал, что я опубликую это как ответ, поскольку это относится к вопросу и может ответить на него в некоторых случаях.
убедитесь, что строка подключения не имеет ошибок, указывает на правильный экземпляр сервера и т. д.
Я использовал SQL Server Profiler (доступен в меню SSMS => Tools) и увидел там (когда IIS попытался подключиться к базе данных), что мой пользователь IIS по какой-то причине NT AUTHORITY\IUSR, независимо от всех шагов, рекомендованных в ответах на этот вопрос. Поэтому я добавил этого пользователя в SQL Server, и это сработало.
моя проблема исправлена.
вы можете столкнуться с этой ошибкой в конкретной базе данных, которая создается после обновления SSMS. Откройте SSMS и выберите базы данных и откройте необходимую базу данных, затем нажмите безопасность--> пользователи--> и щелкните правой кнопкой мыши на пользователях и снова нажмите "новый пользователь" и добавить 'NT AUTHORITY\Authenticated Users' и сохраните работу и перейдите в свою форму на веб-сайте / рабочем столе, что бы вы ни делали. Наслаждаться.
Приложение, которое работало без проблем (и не имело активной разработки в течение примерно 6 месяцев), недавно начало отказываться подключаться к базе данных. Администраторы операций не могут сказать, что могло быть изменено, что могло вызвать проблему.
Редактировать
Клиентский и серверный компьютер, а также учетные записи пользователей находятся в одном домене. Это происходит, когда брандмауэр Windows выключен.
Основная теория: сервер был перезапущен около недели назад, и ему не удалось зарегистрировать имя участника-службы (SPN). Отказ зарегистрировать SPN может привести к тому, что встроенная проверка подлинности вернется к NTLM вместо Kerberos.
Если ваша проблема связана с серверами, вам нужно обратить внимание на несколько моментов.
Во-первых, вашим пользователям необходимо включить делегирование, и если единственное, что изменилось, скорее всего, они и сделают. В противном случае вы можете снять флажок «Учетная запись является конфиденциальной и не может быть делегирована» для свойств пользователя в AD.
Вы упомянули, что у вас могут быть проблемы с SPN, поэтому обязательно установите SPN для обеих конечных точек, иначе вы не сможете увидеть вкладку делегирования в AD. Также убедитесь, что вы находитесь в расширенном представлении «Пользователи и компьютеры Active Directory».
Если вы все еще не видите вкладку делегирования даже после исправления SPN, убедитесь, что ваш домен не находится в режиме 2000. Если это так, вы можете «поднять уровень функции домена».
На этом этапе вы можете пометить учетную запись как доверенную для делегирования:
In the details pane, right-click the user you want to be trusted for delegation, and click Properties.
Click the Delegation tab, select the Account is trusted for delegation check box, and then click OK.
Наконец, вам также необходимо настроить все машины как доверенные для делегирования.
Как только вы это сделаете, повторно подключитесь к своему серверу sql и протестируйте понравившиеся серверы. Они должны работать.
Во-первых: моя проблема не такая же, как у вас, но этот пост - первое, что появляется в Google из-за Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON' ошибки в то время, когда я это писал. Решение может быть полезно людям, ищущим эту ошибку, поскольку я не нашел этого конкретного решения в Интернете.
Вот где это отличается от вашей проблемы. Ни один из компьютеров в локальной сети не находится в домене, они находятся только в рабочей группе. Чтобы использовать аутентификацию Windows с рабочей группой, как компьютер с сервером (в моем случае MSSQL Server), так и компьютер с сервисом, запрашивающим данные (в моем случае Apache), должны были иметь пользователя с таким же именем и паролем.
Подводя итог, Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON' ошибка в обоих наших случаях, по-видимому, вызвана неработающей службой и / или неправильным пользователем. Обеспечение правильного SPN или другой службы запущено и под правильным пользователем должно решить анонимную часть проблемы.
Читайте также: