401 - Несанкціонований сервер 2008 R2 IIS 7.5


20

У вікні Server 2008 IIS 7.5 розміщено веб-додаток.

З пульта дистанційного керування вона дає цю помилку: 401 - Unauthorized: Access is denied due to invalid credentials. (віддалений = настільний ПК у тій самій локальній мережі)

Спробували кілька віддалених клієнтів, використовуючи різні браузери, все той же результат. (IE, FF та Chrome)

Натискання програми на робочий стіл самого сервера працює бездоганно . Однак я не пробував Firebug на робочому столі сервера. Я б припустив, що все ще видає код статусу 401, але все одно повертає вміст. Дивіться оновлення №2.

У додатку використовується Anonymous Authentication.

Додаток написано .NET 4.0 Asp.Net, використовуючи рамку MVC.

Статичний вміст працює чудово, наприклад: http://server.com/content/image.jpg

Sysinternals procmonповертає ці 2 результати для кожного запиту: ШВИДКО ІЗ ВІДКЛЮЧЕНО та ПАТ НЕ ЗНАЙДЕНО.

У мене є ще 2 додатки MVC, які працюють на тому ж сервері. Я перевірив безпеку на папках і всі вони відповідають.

Додаток працює у вікні Server 2008 IIS 7.0.

Нічого не відображається в журналі подій на сервері, пов’язаному з цим.

Витягаючи моє волосся тут, будь-які поради щодо усунення несправностей?

ОНОВЛЕННЯ №1 : Це просто більше WTF, як я копаю.

Якщо я натискаю на додаток у IIS Manager -> Сторінки помилок -> Вибір редагування параметрів функції Detailed Errors, програма працює віддалено. Не залишаючи цього питання, тому проблема ще не вирішена, її просто більш заплутано.

ОНОВЛЕННЯ №2 : Використовуючи Firebug, я бачу, що статус залишається 401 Unauthorized, але Відповідь повертає правильний HTML програми.

ОНОВЛЕННЯ №3 Обігравшись з невдалим відстеженням запиту, ось слід ПОПЕРЕДЖЕННЯ Запит запиту, який викликає 401:

ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 401 
HttpReason Unauthorized 
HttpSubStatus 0 
ErrorCode 0 
ConfigExceptionInfo  
Notification EXECUTE_REQUEST_HANDLER 
ErrorCode The operation completed successfully. (0x0)

Оновлення №4 регулярного журналу IIS відображає це:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2010-07-20 19:17:22
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2010-07-20 19:17:22 10.10.1.10 GET /Purchasing/Home - 80 - 10.10.1.12 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.6)+Gecko/20100625+Firefox/3.6.6 401 0 0 4414

Ви спробували запустити невдале запит відстеження на сервері та отримати доступ до програми з віддаленої машини. Якщо стався збій, слід побачити причину.
Вівек Кумбхар

@vivek дивіться моє останнє оновлення
mxmissle

АРРГ !!! Здобув, але цим знову! 2 години витратили на пошуки Html.RenderAction, потім зрозуміли, що Razor використовує, Html.Actionтак що мої початкові пошуки виявилися порожніми.
mxmissle

О, пройшло пару років, здогадуєтеся про що? Щойно витратили цього ранку 3 години на цей ПРОТИ! Коли я буду вчитися?!?!?!
mxmissle

Відповіді:


19

Іноді доводиться робити крок назад ... Причиною цього було те, що я, на Html.RenderAction()мою думку, називав метод дії, позначений [Authorize]атрибутом.


1
Це була моя проблема, це було досить засмучую, щоб пробити панду (не те, що я хотів би). Спасибі mxmissle.
Халид Абухакме

4

Оскільки він працює локально, але не віддалено, мені здається, що анонімний обліковий запис користувача не має до чогось доступу, але ваш користувач Windows робить. Щоб довести це, вимкніть автентифікацію Windows для веб-сайту та перевірте, чи не працює він локально.

Що б там не було, швидше за все, ідентифікатор вашого веб-сайту замість ідентифікації пулу додатків, інакше він може зламатись локально та віддалено. Моя рекомендація, якщо у вас є від 1 до 1 зіставлення сайтів у пулах додатків або у вас середовище з високою довірою, - це встановити анонімний обліковий запис користувача для використання ідентифікації пулу додатків. Тоді вам не потрібно турбуватися про обслуговування другого користувача.

Ви згадали провідник процесів. Це добре для пошуку інформації про запуску, але інструмент, який, ймовірно, виявить помилки в доступі, - це процесмон (також від sysinternals). Спробуйте, докоріть і захопіть, а потім шукайте слово "відмовлено". Він повинен з'явити будь-які проблеми, яким заборонено доступ на диску.


4

Ви будете мати таку саму поведінку, коли у вас є фільтр для спеціальної авторизації, який успадковує від AuthorizeAttributeодного і більше викликів OnAuthorizationметоду, при цьому один з них встановить AuthorizationContext.Resultна `HttpUnauthorizedResult '


4

Чомусь це вирішило мою проблему.

  1. Клацніть сайт у IIS.
  2. Двічі натисніть автентифікацію
  3. Клацніть правою кнопкою миші та виберіть Додаткові налаштування
  4. Зняти вибір "Увімкнути автентифікацію в режимі ядра"

2

Ви перевіряли налаштування відповідно до правил авторизації? Якщо хтось може отримати доступ до цієї сторінки (це, здається, ваша мета), переконайтеся, що у вас є правило "Дозволити", яке містить "Усі користувачі" під стовпцем "Користувачі".

Потім у розділі "Автентифікація" переконайтесь, що немає конфліктів, і лише Анонімна автентифікація включена.

Сподіваюся, що це допомагає.


1
Дозволити - Усі користувачі - Успадковано
mxmissle
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.