401-인증되지 않은 Server 2008 R2 IIS 7.5


20

Server 2008 IIS 7.5 상자에 웹 응용 프로그램이 배포되어 있습니다.

원격에서 다음 오류가 발생 401 - Unauthorized: Access is denied due to invalid credentials합니다.. (원격 = 동일한 LAN의 데스크탑)

서로 다른 브라우저를 사용하여 여러 원격 클라이언트를 시도했지만 모두 동일한 결과입니다. (IE, FF 및 Chrome)

서버 자체데스크톱 에서 응용 프로그램을 실행하면 완벽하게 작동합니다 . 그러나 서버 데스크톱에서 Firebug를 시도하지 않았습니다. 여전히 401 상태 코드를 발행하고 있지만 어쨌든 내용을 반환한다고 가정합니다. 업데이트 # 2를 참조하십시오.

응용 프로그램이 익명 인증을 사용하고 있습니다.

응용 프로그램은 MVC 프레임 워크를 사용하여 .NET 4.0 Asp.Net으로 작성되었습니다.

정적 컨텐츠는 잘 작동합니다 (예 : http://server.com/content/image.jpg).

Sysinternals procmon는 각 요청에 대해 FAST IO DISALLOWED 및 PATH NOT FOUND라는 두 가지 결과를 반환합니다.

동일한 서버에서 2 개의 다른 MVC 앱이 제대로 실행 중입니다. 폴더의 보안을 확인했으며 모두 일치합니다.

응용 프로그램은 Server 2008 IIS 7.0 상자에서 제대로 실행됩니다.

이와 관련된 서버의 이벤트 로그에 아무것도 나타나지 않습니다.

문제 해결 요령을 여기로 내 머리를 잡아 당겨?

업데이트 # 1 : 발굴 할 때 WTF가 더 커집니다.

IIS 관리자에서 응용 프로그램-> 오류 페이지-> 기능 설정 편집을 선택 Detailed Errors하면 앱이 원격으로 작동합니다. 이 상태를 유지하지 않으면 문제가 아직 해결되지 않아 혼란 스럽습니다.

업데이트 # 2 : Firebug를 사용하면 Status가 여전히 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 Kumbhar

@vivek 내 최신 업데이트 참조
mxmissile

ARRG !!! 그러나 이것으로 다시! 2 시간 동안 검색을 낭비한 Html.RenderAction후 Razor가 사용한다는 사실을 깨달아 Html.Action초기 검색이 비었습니다.
mxmissile

오 몇 년이 지 났어요. 오늘 아침에이 시간에 3 시간을 낭비했습니다! 언제 배울 수 있습니까?!?!?!
mxmissile

답변:


19

때때로 당신은 한 발짝 물러서야합니다 ... 이것의 원인은 속성 Html.RenderAction()으로 표시된 액션 메소드라는 내 견해에 있었습니다 [Authorize].


1
이것은 내 문제 였고 팬더를 펀치하기에 충분하지 않았습니다. 감사합니다 mxmissile.
칼리드 아부 하크 메

4

로컬에서는 작동하지만 원격으로는 작동하지 않기 때문에 익명의 사용자 계정에 액세스 권한이 없지만 Windows 사용자는 액세스하는 것처럼 들립니다. 이를 증명하려면 웹 사이트의 Windows 인증을 끄고 로컬로 중단되는지 확인하십시오.

무엇을 위반하든 앱 풀 ID 대신 웹 사이트 ID로 실행 중일 수 있습니다. 그렇지 않으면 로컬 및 원격으로 중단됩니다. 앱 풀에 사이트를 1 대 1로 매핑하거나 환경이 신뢰할 수있는 경우 익명 사용자 계정을 설정하여 앱 풀 ID를 사용하는 것이 좋습니다. 그런 다음 유지 관리를 위해 두 번째 사용자에 대해 걱정할 필요가 없습니다.

프로세스 탐색기를 언급했습니다. 그것은 실행중인 정보를 찾는 데 좋지만 액세스 거부 오류를 발견 할 수있는 도구는 processmon입니다 (sysinternals에서도). 사용해보고 재현하고 캡처 한 다음 '거부 됨'이라는 단어를 검색하십시오. 디스크에서 액세스 거부 문제가 발생해야합니다.


4

AuthorizeAttribute하나 이상의 OnAuthorization메소드 AuthorizationContext.Result를 'HttpUnauthorizedResult'로 설정 하고 메소드에서 하나 이상의 호출을 상속하는 사용자 정의 권한 부여에 대한 필터가있는 경우에도 이와 동일한 동작이 발생합니다.


4

어떤 이유로 이것은 내 문제를 해결했습니다.

  1. IIS에서 사이트를 클릭하십시오.
  2. 더블 클릭 인증
  3. 마우스 오른쪽 버튼을 클릭하고 고급 설정을 선택하십시오.
  4. "커널 모드 인증 사용"을 선택 해제하십시오.

2

인증 규칙에서 설정을 확인 했습니까? 누구나이 페이지에 액세스 할 수 있다면 (목표 인 것 같습니다) 사용자 열 아래에 "모든 사용자"가있는 "허용"규칙이 있는지 확인하십시오.

그런 다음 "인증"에서 충돌이없고 익명 인증 만 활성화되어 있는지 확인하십시오.

희망이 도움이됩니다.


1
허용-모든 사용자-상속
mxmissile
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.