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
답변
때때로 당신은 한 발짝 물러서야합니다 … 이것의 원인은 속성 Html.RenderAction()
으로 표시된 액션 메소드라는 내 견해에 있었습니다 [Authorize]
.
답변
로컬에서는 작동하지만 원격으로는 작동하지 않기 때문에 익명의 사용자 계정에 액세스 권한이 없지만 Windows 사용자는 액세스하는 것처럼 들립니다. 이를 증명하려면 웹 사이트의 Windows 인증을 끄고 로컬로 중단되는지 확인하십시오.
무엇을 위반하든 앱 풀 ID 대신 웹 사이트 ID로 실행 중일 수 있습니다. 그렇지 않으면 로컬 및 원격으로 중단됩니다. 앱 풀에 사이트를 1 대 1로 매핑하거나 환경이 신뢰할 수있는 경우 익명 사용자 계정을 설정하여 앱 풀 ID를 사용하는 것이 좋습니다. 그런 다음 유지 관리를 위해 두 번째 사용자에 대해 걱정할 필요가 없습니다.
프로세스 탐색기를 언급했습니다. 그것은 실행중인 정보를 찾는 데 좋지만 액세스 거부 오류를 발견 할 수있는 도구는 processmon입니다 (sysinternals에서도). 사용해보고 재현하고 캡처 한 다음 ‘거부 됨’이라는 단어를 검색하십시오. 디스크에서 액세스 거부 문제가 발생해야합니다.
답변
AuthorizeAttribute
하나 이상의 OnAuthorization
메소드 AuthorizationContext.Result
를 ‘HttpUnauthorizedResult’로 설정 하고 메소드에서 하나 이상의 호출을 상속하는 사용자 정의 권한 부여에 대한 필터가있는 경우에도 이와 동일한 동작이 발생합니다.
답변
어떤 이유로 이것은 내 문제를 해결했습니다.
- IIS에서 사이트를 클릭하십시오.
- 더블 클릭 인증
- 마우스 오른쪽 버튼을 클릭하고 고급 설정을 선택하십시오.
- “커널 모드 인증 사용”을 선택 해제하십시오.
답변
인증 규칙에서 설정을 확인 했습니까? 누구나이 페이지에 액세스 할 수 있다면 (목표 인 것 같습니다) 사용자 열 아래에 “모든 사용자”가있는 “허용”규칙이 있는지 확인하십시오.
그런 다음 “인증”에서 충돌이없고 익명 인증 만 활성화되어 있는지 확인하십시오.
희망이 도움이됩니다.