IIS 서버 응용 프로그램 개발 및 디버깅에 가장 좋은, 완벽한 환경은 실제 서비스 환경과 동일하게 구성하는 것이다!


예를 들어 SSL(HTTPS)이 적용된 사이트에 Windows 인증까지 걸려 있는 사이트를 만든다고 생각해 보면,

보통 대부분의 경우 IISExpress 환경에서 비SSL 기반으로 개발 작업을 거의 다 해놓고
Windows 인증 부분은 웹 검색 및 테스트를 거쳐 인증되었는지 검사하는 코드만 "상상"으로 만들어 놓고
실제 디버깅/테스트는 개발(테스트/스테이징) 서버에 반영해서 진행을 하는 식이다.

개발 장비가 Windows Server OS가 아닌 이상(대부분 Windows 7, 10 등 클라이언트 OS를 쓰니까...) 

개발 단계에서 IISExpress를 사용하지 않고 IIS를 사용하려고만 해도 조건이 매우 까다롭고 복잡해지는데,

다행히 개발 장비로 Windows Server를 사용하고 있거나 개발 서버를 별도로 할당받아 쓰고 있다면

어쨌든 위 예로 든 경우를 대충 거의 다 비슷하게 구성이 가능하긴 한데,

딱 한 가지 안되는 것이 있다.


바로, Windows 인증(또는 통합 인증이라고도 불렀다).


개발 서버 로컬에서는 Windows 인증 팝업창이 나타나서 제대로 정확하게 계정 정보를 입력해도

계속 팝업창이 나타나거나 3번 정도 나오다가 접근 거부 페이지가 뜬다.


다른 서버나 PC에서 원격으로 접속하면 잘 된다.

그런데 로컬에서 하면 똑같이 해도 절대 안되는데, 대체 왜 그런 것일까?





그 이유는 인터넷 영역의 문제도, 호환성 보기의 문제도 아니다.


바로 윈도우 기본 보안 동작 중의 하나인 "루프백 보안 검사 기능" 때문인데,

해커가 서버로 침투하여(원격 데스크톱 등) 도메인 이름 등 FQDN을 사용하여 로컬 IIS 서버에 접속하는 경우

자동 인증이 되어버리는 보안 취약점을 방지하기 위해 Windows Server 2003 SP1 버전부터 적용된 것으로,

이 경우 "401.1 접근 거부" 오류를 리턴하고 인증이 절대 되지 않도록 한다.


Windows 인증을 절대 받을 수 없도록 해두었기 때문에, 당연히 안되는 것이었다. ㄷㄷ

안되는 게 당연한 거였어...


그런데, 조금 더 들여다 보면 이를 해제하는 방법도 제공하고 있다.


>> 참고: https://blogs.technet.microsoft.com/sharepoint_foxhole/2010/06/21/disableloopbackcheck-lets-do-it-the-right-way/


여기 또는


>> 참고: https://stackoverflow.com/questions/17466665/windows-authentication-not-working-on-local-iis-7-5-error-401-1


여기 잘 나와있다.



결론만 뽑아보자면,


Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0]

"BackConnectionHostNames"=hex(7):00,00



위 레지스트리를 적용하고, 위 값(다중 문자열)에 사용할 도메인 이름을 한 줄에 하나씩 넣어주면 된다.

즉, 여러개라도 다 된다는 뜻.


값 입력이 끝났으면 IISRESET 한번 해 주면

로컬에서 Windows 인증이 잘 된다!





Posted by 떼르미
,


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]