401 Несанкционированный: доступ запрещен из-за неверных учетных данных
Я использую IIS Express для развертывания приложения MVC4. Этот сайт отлично работает на одном компьютере. Но в Lan это выдает ошибку 401.
<authentication mode="Forms">
<forms loginUrl="~/" slidingExpiration="true" timeout="20">
</forms>
</authentication>
В доме контроллер
[HttpPost]
[AllowAnonymous]
public ActionResult Index(LoginModel model, string returnUrl)
{
}
Я запускаю IIS сервер из командной строки в режиме администратора. IIS отвечает на запрос с ошибкой 401
,
Любая подсказка?
17 ответов
Я понимаю, что это старый пост, но у меня была та же ошибка на IIS 8.5. Надеюсь, что это может помочь другому человеку, столкнувшемуся с той же проблемой (я не видел свою проблему в общих чертах в других вопросах с похожим названием).
Казалось, все настроено правильно с идентификатором пула приложений, но я продолжал получать сообщение об ошибке. После долгих копаний у анонимного пользователя есть возможность использовать учетные данные удостоверения пула приложений или конкретного пользователя. По какой-то причине у меня был дефолт для конкретного пользователя. Изменение настройки для идентификатора пула приложений устранило проблему для меня.
- IIS Manager → Сайты → Сайт
- Дважды щелкните "Аутентификация"
- Выберите анонимную аутентификацию
- На панели "Действия" выберите "Изменить".
- Выберите "Пул приложений" и нажмите "ОК".
Надеюсь, это сэкономит кому-то еще время!
Если вы используете IIS 7, сделайте что-то вроде этого:
- Выберите свой сайт.
- Нажмите на страницы ошибок.
- Изменить настройки функции.
- Выберите подробные ошибки.
Наслаждаться.
Если кто-то все еще ищет это, это решило проблему для нас:
Кому бы это ни помогло, это спасло мне жизнь...
IIS 7 было трудно понять, почему я получаю 401 - Несанкционированный: доступ запрещен из-за неверных учетных данных... пока я не сделал это...
- Откройте IIS и выберите веб-сайт, который вызывает 401
- Откройте свойство "Аутентификация" под заголовком "IIS"
- Выберите пункт "Аутентификация Windows" и нажмите "Поставщики".
- Для меня проблема была в том, что переговоры были выше NTLM. Я предполагаю, что за кулисами происходило какое-то рукопожатие, но я никогда не был действительно аутентифицирован. Я переместил NTLM на первое место и BAM, который это исправил.
У меня была эта проблема в IIS 10. Вот как я ее исправил.
- Откройте IIS
- Выберите сайт
- Открытая аутентификация
- Изменить анонимную аутентификацию
- Выберите идентификатор пула приложений
Убедитесь, что вы включили анонимную аутентификацию на iis следующим образом:
Я понимаю, это старый вопрос, но он возник в моих поисках. Была похожая проблема для приложения MVC, недавно созданного, развернутого впервые, и механизм аутентификации не был полностью хеширован.
Это не была настройка IIS в моем случае, это был контроллер, который не был [AllowAnonymous]
украшен. Я использовал Render.Action/Html.Action в Layout.cshtml, и пользователь не прошел проверку подлинности. Поэтому макет попытался загрузить действие с проверкой подлинности в контексте без проверки подлинности.
Как только я обновил действие до AllowAnonymous, проблема исчезла, и это привело меня к этому.
Надеюсь, это кому-нибудь поможет.
Я столкнулся с этой ошибкой, когда создал пустой проект с папками MVC, а затем развернул приложение на сервере. Моя проблема заключалась в том, что я не определил аутентификацию в Web.config
так что все, что мне нужно было сделать, это добавить эту строку в system.web
тег.
<system.web>
<authentication mode="None"/>
</system.web>
У меня была похожая проблема сегодня. По какой-то причине мой запрос GET был в порядке, но запрос PUT не выполнялся для моей службы WCF WebHttp
Добавление следующего в Web.config решило проблему
<system.web>
<authentication mode="Forms" />
</system.web>
Я столкнулся с той же проблемой в IIS 8.5. Рабочим решением для меня было изменение IIS для отображения подробных ошибок. Смотрите ответ от sna2stha. Но я думаю, что не стоит отправлять подробные сообщения об ошибках браузерам в рабочей среде. Я добавил / изменил атрибут существующие Response в разделе httpErrors, чтобы IIS не обрабатывал ни одного существующего ответа Asp.net:
<httpErrors existingResponse="PassThrough" />
Это работает для меня.
Я столкнулся с подобной проблемой.
Папка была открыта для общего доступа, и было предоставлено разрешение Authenticated Users, что решило мою проблему.
Щелкните правой кнопкой мыши основной каталог, в котором находятся файлы проекта.
Свойства->Безопасность->Правка->Добавить->тип
IIS_IUSRS
и нажмите кнопку «Проверить имена».
Результат будет выглядеть
ComputerUsername\IIS_IUSRS
Например: DESKTOP-M0R6PVF\IIS_IUSRS
а затем нажмите кнопку «ОК».
Как показали многие ответы, ошибка может быть вызвана множеством причин. В моем случае это было связано с правилами авторизации: они были добавлены гораздо позже, после развертывания приложения. Эта функция IIS включена как компонент Windows (Всемирные веб-службы->Безопасность->Авторизация URL).
Виной тому был этот конкретный раздел внутри web.config:
<system.webServer>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Deny" users="?" />
<add accessType="Deny" users="user1,user2" />
<add accessType="Allow" users="*" />
</authorization>
</security>
</system.webServer>
Таким образом, рекорд для
users="?"
также заблокировал доступ к пути с анонимной аутентификацией, поскольку он унаследовал правила по умолчанию. Однако в IIS вы можете перейти к определенной папке/файлу, доступ к которому должен быть анонимным, и выбрать правила авторизации:
Здесь можно перезаписать правила локально, удалив старое и, при желании, добавив вместо него разрешенное правило, чтобы сделать его более явным:
В моем случае, что заставило его работать, так это изменение идентификатора анонимного пользователя с конкретного пользователя (IUSR) на идентификатор пула приложений. Достаточно странно, потому что другие сайты используют IUSR конкретного пользователя и работают нормально.
Вы можете нажать F4 в веб-проекте, чтобы открыть окно «Свойства проекта».
Затем убедитесь, что анонимная аутентификация включена в разделе «Сервер разработки»:
У меня была немного другая проблема. Проблема с учетными данными была связана с основным пользователем, запускающим приложение, а не с пользователем, пытающимся войти в систему. Один из способов проверить это - перейти в Управление IIS -> Сайты -> Ваш сайт -> Основные настройки -> Настройки тестирования.
У меня была проблема с доступом к веб-сайту, и я просто не мог заставить работать аутентификацию Windows. В конце концов, это была проблема с правами доступа к папке, а не с конфигурацией ASP.NET, и когдаEveryone
пользователю были предоставлены разрешения, он начал работать.
В моем случае,
Мое приложение разработано в MVC
и мой класс контроллера дома был украшен [Authorize]
который был причиной этой проблемы.
Поэтому я удалил его, потому что мое приложение не требует никакой аутентификации.