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 모듈이 올바르게로드되었음을 나타냅니다 .ModuleName
WindowsAuthentication
아무도 내가 여기서 잃어버린 것을 말해 줄 수 있습니까?
빠른 업데이트:
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 헤더를 보내지 않습니까?