2013-04-25 2 views
5

실제 서버 이름과 다른 DNS 별칭을 사용하여 액세스하는 IIS 7.5에서 실행되는 사이트가 있습니다. IE 8에서는 통합 인증에 실패했지만 Firefox와 Chrome에서는 모든 것이 잘 동작합니다. IE는 몇 차례 자격 증명 문제를 제기 한 다음 401.1 오류 페이지를 표시합니다.IIS의 WindowsAuthentication에서 NEGOTIATE를 제거하십시오.

NTLM을 통해 Kerberos (일명 "협상")를 사용하는 IE 때문이며 Kerberos는 서비스 주체를 등록해야한다는 것을 알아 냈습니다 이름 (SETSPN 사용)을 사용하여 DNS 이름과 서버 이름 간의 불일치가 올바르게 처리되도록하십시오.

그러나 내 웹 사이트는 가장을 필요로하지 않습니다. 위임이 충분합니다. 따라서 SetSPN을 사용하는 대신 IIS의 WindowsAuthentication 메서드 목록에서 "Negotiate"를 제거하고 싶습니다.

IIS에서이 작업을 수행하는 방법을 찾기 위해 꽤 오랜 시간 동안 검색했습니다. 많은 appcmd 명령을 가지고 놀았지만 온라인 예제를 찾을 수 없거나 MSDN 설명서를 읽거나 appcmd /?을 사용하여 전체 웹 서버가 아닌 특정 응용 프로그램에만 적용되는 appcmd 명령을 만드는 방법을 찾아 낼 수 없습니다 . 2 일 동안 검색 시간이 약간 남았고 적어도 3 개의 웹 페이지가 방문되었지만 여전히 효과가 없습니다.

타네 테이션을 어떻게 할 수 있습니까? 그렇게 쉬운 것처럼 보입니다!

답변

11

IIS에서 구성 편집기를 엽니 다. IIS 7.5와 함께 제공되거나 IIS 7.0 용 IIS administration pack을 다운로드 할 수 있습니다. 영향을주고 자하는 범위 (서버, 사이트 또는 응용 프로그램)로 이동 한 다음 아이콘을 엽니 다 (

IIS Configuration Editor).

변경 system.webServer/security/authentication/windowsAuthentication에 섹션 :

IIS Configuration Editor - Windows Authentication

providers 항목을 클릭 한 다음 오른쪽에 Edit Items을 클릭합니다. "제거"는 "협상"항목을 선택하고 클릭

IIS Configuration Editor - Windows Authentication - providers

오른쪽에있는 Actions 창에서 Apply을 대화 상자를 닫고 클릭합니다.

문제가 해결되었습니다. 더 이상 Kerberos/협상하지 마십시오!

: 당신은 또한 행동에 Generate Script을 클릭 할 수는 변화를 만들 것입니다 코드를 표시하는 창 중 하나의 C#, 자바 스크립트, 또는 명령 줄에서 APPCMD 명령어와.

참고로 구성 편집기를 사용하지 않고 작업을 수행하려면 appcmd 문을 사용하십시오.

appcmd.exe set config "Virtual/path/to/application" -section:system.webServer/security/authentication/windowsAuthentication /-"providers.[value='Negotiate']" /commit:apphost