문제

방금 인트라넷에 배포를위한 기본 ASP MVC 웹 사이트를 구축했습니다. 사용자가 IIS 상자와 동일한 도메인에있을 것으로 예상하며, 인증 된 Windows 사용자가 아닌 경우 액세스 할 수 없습니다.

방금 서버 2003 R2 SP2에서 실행되는 IIS6에 이것을 배포했습니다. 웹 앱은 자체 풀 사용자 계정이있는 자체 풀로 구성됩니다. 웹 앱의 IIS 디렉토리 보안 옵션은 "Windows Integrated Security"로만 설정되며 Web.config 파일은 다음과 같습니다.

<authentication mode="Windows" />

IIS6 서버 자체의 원격 데스크톱 세션에서 IE7 브라우저 창은 액세스하면 웹 앱을 성공적으로 인증하고 탐색 할 수 있습니다. http : // localhost/myapp.

그러나 서버에서 서버 이름을 통해 액세스하는 경우 (즉 http : // myserver/myapp) 그런 다음 IE7은 세 번의 시도가 올바른 자격 증명을 입력 한 후 결국 "HTTP 오류 401.1- 무단 : 유효하지 않은 자격 증명으로 인해 액세스가 거부됩니다"를 반환합니다.

워크 스테이션이 웹 앱 URL (자연스럽게 서버의 이름을 사용하지 않고 "로컬 호스트"가 아닌)을 탐색 할 때 동일한 문제가 발생합니다.

IIS6 서버는 우리가 보유한 유일한 도메인의 구성원이며 방화벽을 사용하지 않습니다.

이것이 작동하도록 올바르게 구성하지 못한 것이 있습니까?

감사,


나는 Matt Ryan, Graphain 및 Mike Dimmick의 제안을 지금까지 성공하지 못했습니다. 서버 2003 DC와 별도의 서버 2003 IIS6 서버를 사용하여 가상 머신 테스트 랩을 구축했으며 문제를 복제 할 수 있습니다.

IIS6 서버의 시스템 이벤트 로그에서 처음으로 항목이 표시됩니다. 처음으로 비 Localhost URL을 통해 사이트에 액세스하려고합니다 (예 : http : // iis/myapp). FQDN URL도 실패합니다.

출처 : Kerberos, 이벤트 ID : 4
Kerberos 클라이언트는 서버 호스트/iis.test.local에서 krb_ap_err_modified 오류를 받았습니다. 사용 된 대상 이름은 http/iis.test.local입니다. 이는 Kerberos 서비스 티켓을 암호화하는 데 사용되는 비밀번호가 대상 서버의 비밀번호와 다르다는 것을 나타냅니다. 일반적으로 이것은 대상 영역 (Test.local)과 클라이언트 영역에서 동일하게 명명 된 기계 계정에 기인합니다.

도움이 되었습니까?

해결책

광범위한 인터넷 검색 후 다음 MSDN 기사에서 솔루션을 찾을 수있었습니다.
방법 : ASP.NET 2.0 응용 프로그램에 대한 서비스 계정 작성

특히 Windows 지원 도구의 SetSpn 도구를 사용하여 "도메인 계정에 대한 SPN (Service Principal Names) 작성"을 설명하는 추가 고려 사항 섹션 :

setspn -a http/myserver mydomain mypooluser
setspn -a http/myserver.fqdn.com mydomain mypooluser

이것은 가상 테스트 랩과 원래 문제 서버 모두에서 내 문제를 해결했습니다.

기사에는 사용자 정의 풀 사용자와 Windows 인증을 사용하면 해당 풀에서만 관련된 DNS 이름이 제한되어 있다는 점도 중요합니다. 즉, 다른 신원을 가진 다른 풀은 다른 DNS 이름과 연관되어야합니다.

다른 팁

Windows Server 2003 SP1의 새로운 루프백 확인 보안 기능처럼 들립니다. 내가 이해 한 바와 같이, 특정 유형의 가로 채기 공격을 방지하도록 설계되었습니다.

에서 http://support.microsoft.com/kb/896861

증상

FQDN (Fullicified Domain Name) 또는 사용자 정의 호스트 헤더를 사용하여 Microsoft Internet Information Services (IIS) 5.1 또는 IIS 6을 실행중인 컴퓨터에서 호스팅되는 로컬 웹 사이트를 찾아 보면 오류 메시지를받을 수 있습니다. HTTP 401.1- 무단 : 로그온 실패이 문제는 웹 사이트가 통합 인증을 사용하고 로컬 루프백 주소에 매핑 된 이름을 가지고있을 때 발생합니다.

서버에서 웹 사이트를 직접 찾아 보려고하는 경우이 오류 메시지 만받습니다. 클라이언트 컴퓨터에서 웹 사이트를 탐색하면 웹 사이트가 예상대로 작동합니다.

원인

이 문제는 Microsoft Windows XP Service Pack 2 (SP2) 또는 Microsoft Windows Server 2003 서비스 팩 1 (SP1)을 설치하면 발생합니다. Windows XP SP2 및 Windows Server 2003 SP1에는 컴퓨터의 반사 공격을 방지하도록 설계된 루프백 확인 보안 기능이 포함되어 있습니다. 따라서 FQDN 또는 사용하는 사용자 정의 호스트 헤더가 로컬 컴퓨터 이름과 일치하지 않으면 인증이 실패합니다.

해결 방법

  • 방법 1 : 루프백 점검을 비활성화합니다
  • 방법 2 : 호스트 이름을 지정하십시오

보다 http://support.microsoft.com/kb/896861 자세한 내용은.


편집 - 클라이언트 PC에서도 이것을보고 있다고 말한 것을 알았습니다. 그러나 나는 여전히 이러한 해결 방법 중 하나를 테스트하여 문제를 수정했는지 확인하고있다 (그렇다면 DNS 구성에 문제가있을 수 있음).

마치 당신이 모든 일을 제대로 한 것처럼 들립니다.

나는 당신이 확신하지만 '사용자'가 아니라 'domain user'를 사용자 계정으로 사용하고 있는지 확인 했습니까?

IE7은 서버가 인트라넷에있는 것으로 식별되는 경우 Windows 자격 증명 (NTLM, Kerberos) 만 보냅니다. IE7은 또한 인트라넷 영역 잠금 기능을 추가했습니다 - 도메인에없는 경우 기본적으로 아니요 서버는 인트라넷 영역에 있습니다. 이것은 구역 이동 공격을 방지하기 위해 수행되었습니다.

이를 변경하려면 도구/인터넷 옵션, 보안 탭으로 이동 한 다음 로컬 인트라넷을 클릭하십시오. 그런 다음 사이트 버튼을 클릭 한 다음 고급 또는 IE에 인트라넷을 자동으로 감지하고 다른 확인란을 적절하게 선택하지 말라고 IE를 알려 주거나 IE를 알려주십시오.

방금 반대 문제를 겪었습니다. 내 사이트는 외부에서 인증하지만 로컬로는 그렇지 않습니다.

나는 우리가 작동하는 사이트와 비교했으며 차이점은 인증에 실패한 사이트가 Windows 인증을 사용하고 있다는 것입니다.

그러나 내가 작업하는 다른 사이트 (이것은 개발자 서버)는 기본 인증을받는 경향이 있습니다.

정확히 왜 그런지 확실하지 않지만이 문제가 해결되었습니다.

그러나 동시에 "기본 도메인"및 "영역"설정을 발견했습니다.

나는 그것이 거의 가능하지 않다는 것을 알고 있지만 아마도 이것들이 전혀 도움이 될 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top