IIS 7.5에서 Windows 인증 문제 (문제 없음)를 해결 하시겠습니까? 오류는 여전히

IIS와 통합 된 Windows 인증을 얻는 데 문제가있는 사람들에 대한 수천 건의 보고서가 있지만 모두 적용되지 않는 웹 페이지 나 이미 시도한 솔루션으로 연결되는 것으로 보입니다. 이전에 이와 같은 수십 개의 사이트를 배포 했으므로 서버 / 구성에 이상한 일이 발생했거나 너무 오래보고 있었지만 명백하지 않았습니다.

간단히 말해서 모든 것이 로컬 컴퓨터에서 완벽하게 작동하지만 프로덕션 서버에서는 완전히 동일한 구성을 갖습니다 .

로컬 머신에서 :

  • 컴퓨터에서 Windows 7 Ultimate, 서비스 팩 1, IIS 7.5가 실행되고 있습니다.
  • 이 사이트는 IIS와 VS Web Development Server를 모두 사용하여 성공적으로 테스트되었습니다.
  • IIS 사이트 구성에는 Windows 인증을 제외한 모든 인증 방법이 비활성화되어 있습니다.
  • 로컬 컴퓨터가 도메인에 없습니다.
  • 제공자 설정은 협상 및 NTLM (Negotiate : Kerberos 아님)입니다.
  • 확장 된 보호가 꺼져 있습니다.
  • 테스트를 거친 모든 브라우저 (IE, Firefox, Chrome)는 챌린지 프롬프트를 표시하며 내 (로컬) Windows 계정으로 로컬 호스트 도메인 에 로그인 할 수 있습니다.
  • 테스트 된 모든 브라우저는 불투명 한 로컬 IP 주소를 사용하여 작동하므로 브라우저 자체는 사이트가 “로컬”인지 “원격”인지를 신경 쓰지 않는 것 같습니다.
  • 웹 페이지에 현재 로그인 한 사용자를 표시하는 표시 줄을 추가했으며 예상 한 내용 (로그인 한 로컬 사용자)을 정확하게 표시합니다.

원격 머신에서 :

  • 서버가 Windows Server 2008 R2, IIS 7.5를 실행 중입니다.
  • 웹 페이지를로드하면 즉시 401.2 오류가 발생합니다. 인증 헤더가 잘못되어이 페이지를 볼 수있는 권한이 없습니다. 도전 프롬프트가 표시되지 않습니다.
  • IIS 사이트 구성에는 Windows 인증을 제외한 모든 인증 방법이 비활성화되어 있습니다.
  • 원격 시스템이 도메인에 없습니다.
  • 제공자 설정은 협상 및 NTLM (Negotiate : Kerberos 아님)입니다.
  • 확장 된 보호가 꺼져 있습니다.
  • 원격 컴퓨터 (원격 데스크톱 세션)에서 도메인이 로컬 호스트 인지 외부 IP 주소 인지에 관계없이 Internet Explorer에 동일한 오류가 나타납니다 .
  • 로컬 컴퓨터 에서 원격 웹 사이트 를 보려고 해도 오류는 여전히 401이지만 약간 다른 401입니다. 텍스트가 포함 된 하위 코드 없음 : 잘못된 자격 증명으로 인해 액세스가 거부되었습니다.
  • Windows 인증 IIS 역할 기능을 한다 설치되어 있어야합니다.
  • WindowsAuthentication과 모듈 한다 (서버 레벨에서) 추가.
  • Windows 인증을 끄고 기본 인증을 활성화하면 동일한 오류가 발생합니다.
  • Windows 인증을 끄고 익명 (명백하게)을 활성화하면 사이트 로드됩니다.
  • Microsoft 지원 : IIS의 HTTP 401 오류 문제 해결 에 대한 모든 문제 해결 단계를 이미 수행했습니다.
  • 이미 다른 Microsoft 지원 페이지에 표시된 해결 방법을 시도했습니다 (NTLM을 유일한 방법으로 강제로 설정 함).

마지막으로, 401.2 오류에 대해 FREB를 설정하려고 시도했지만 결과에 유용한 정보가없는 것 같습니다. 다음 경고 만 표시됩니다.

MODULE_SET_RESPONSE_ERROR_STATUS

ModuleName IIS 웹 코어
알림 2
HttpStatus 401
HttpReason 인증되지 않은
HttpSubStatus 2
오류 코드 2147942405
ConfigExceptionInfo
알림 AUTHENTICATE_REQUEST
오류 코드 액세스가 거부되었습니다. (0x80070005)

… 이것은 내가 이미 알고있는 것을 말해주는 것 같습니다 (자격 증명을 협상하는 대신 요청을 단순히 거부하는 것입니다).

추적은 = (및 기타 다양한 ASP.NET 후속 이벤트-[안타깝게도 여기서 흥미로운 오류나 경고는 없음]) NOTIFY_MODULE_START행 이 있기 때문에 WindowsAuthentication 모듈이 올바르게로드되었음을 나타냅니다 .ModuleNameWindowsAuthentication

아무도 내가 여기서 잃어버린 것을 말해 줄 수 있습니까?


빠른 업데이트:

IP, URL 및 기타 정보를 공개하므로 Wireshark 덤프 전체를 전송하는 것이 약간 불편하지만 로컬 호스트와 Fiddler의 원격 서버에서 HTTP 응답을 나란히 비교 한 결과 꽤 자기처럼 보입니다. -문제가 무엇인지 확인하십시오.

로컬 호스트 :

HTTP / 1.1 401 무단
캐시 제어 : 개인
내용 유형 : text / html; charset = utf-8
서버 : Microsoft-IIS / 7.5
WWW 인증 : 협상
WWW 인증 : NTLM
X-Powered-By : ASP.NET
날짜 : 2011 년 12 월 17 일 토요일 23:42:34 GMT
내용 길이 : 6399
프록시 지원 : 세션 기반 인증

먼:

HTTP / 1.1 401 무단
콘텐츠 유형 : text / html
서버 : Microsoft-IIS / 7.5
X-Powered-By : ASP.NET
날짜 : 2011 년 12 월 17 일 토요일 23:43:13 GMT
내용 길이 : 1293

캐시 제어와 같이 중요하지 않은 몇 가지 차이점 외에도 원격 서버가 WWW-Authenticate 헤더를 클라이언트로 다시 보내지 않는다는 것이 주요 차이점입니다 .

따라서 Windows 인증이 설치,로드 및 독점적으로 활성화 된 것으로 보이는 경우 IIS가 왜 WWW-Authenticate 헤더를 보내지 않습니까?



답변

문제 해결됨. 나는 마침내 모듈 목록을 나란히 비교하기로 결정했으며 실제로 하나가 누락되었습니다. 두 가지 Windows 인증 모듈 이 있음이 밝혀졌습니다 .

서버에는 관리 WindowsAuthentication모듈이 있지만 WindowsAuthenticationModule위에서 강조 표시된 기본 모듈은 없습니다 . 그렇게 구성한 이유는 누구나 추측 할 수 있지만 기본 모듈이로드되지 않으면 관리되는 모듈이 자동으로로드되고 자동으로 실패합니다.

따라서이 문제가 발생하는 이후의 독자라면 두 모듈모두로드되어 있는지 확인하십시오. IIS 중 하나 가 없으면 IIS 가 경고하지 않기 때문 입니다.


답변

Windows 인증에서 실행되는 ASP.NET 사이트에서 로컬로 작업하는 개발자의 경우 반드시 이것이 문제를 해결하지는 않습니다. 루프백 검사를 비활성화하는 레지스트리 해킹이 발견되었습니다. 이 수정 :-

레지스트리 키-HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa

“DisableLoopbackCheck”라는 값이 1 인 DWORD를 만듭니다.

설정을 적용하려면 기기를 재부팅해야합니다