IIS에서 호스팅되는 데이터 서비스와 상호 작용하는 VB.net으로 작성된 프로그램이 있습니다. 인증은 사용자 Active Directory 자격 증명을 통해 처리됩니다. 내 고객 사이트 중 하나에서 (정확히 100 개 정도) 고객의 워크 스테이션에서 데이터 서비스에 대한 요청이 401 상태로 실패합니다.httpwebrequest 401 응답
몇 가지 추가 관련 정보 : 프로덕션 IIS 설치는 두 개의 노드 . 로드 밸런서는 트래픽을 노드에 전달합니다. 또한 문제의 워크 스테이션에서 Internet Explorer로 작성한 동일한 요청이 실패하지 않습니다.
VB 코드를 통해 요청을 할 때 무언가가 사용자의 자격 증명을 스트리핑하는 것으로 의심되지만 그게 무엇이 될지 모르겠다. 어떤 생각을 감상 할 수있다
Dim httpRequest As HttpWebRequest = Nothing
Dim httpResponse As HttpWebResponse = Nothing
httpRequest = WebRequest.Create("http://server/xyzportal/portal.php")
httpRequest.KeepAlive = False
httpRequest.UseDefaultCredentials = True
httpRequest.Method = "GET"
httpRequest.ContentLength = 0
httpRequest.Accept = "text/xml"
httpRequest.Timeout = 3000000
httpResponse = httpRequest.GetResponse
: 여기
내가 요청을 만들기 위해 사용하는 VB 코드입니다.추가 정보 : 여기에는 실패한 요청에 대한 IIS 로그 항목이 있습니다. 작업 기계의 요청에 대한 IIS 항목에 해당
2014-11-11 22:20:42 199.99.51.58 GET /xyzportal/portal.php - 80 - 199.99.50.128 - 401 2 5 0
2014-11-11 22:20:42 199.99.51.58 GET /xyzportal/portal.php - 80 - 199.99.50.128 - 401 1 2148074248 0
대비 : 2 항목이 Windows 사용자 이름을 포함하지 않습니다 알 수 있습니다. Windows 사용자 이름을 포함 않습니다 2 항목을 주목하라 :
2014-11-11 22:56:40 199.99.51.58 GET /xyzportal/portal.php - 80 - 199.99.50.128 - 401 2 5 0
2014-11-11 22:56:40 199.99.51.58 GET /xyzportal/portal.php - 80 MYDOMAIN\jreichert 199.99.50.128 - 200 0 0 93
IP 주소 199.99.50.128와 기계가로드 밸런서이다.
두 컴퓨터에서 동일한 도메인과 사용자로 로그인했습니다.
자격 증명을 명시 적으로 만든 경우 발견했습니다. - 자격 증명 없음 NetworkCredential = New NetworkCredential (user, pass) - 자격 증명을 요청이 성공한 httpWebRequest.Credentials 속성에 할당합니다. 왜 이것이 한 대의 컴퓨터에서만 발생하는지에 대해 아직도 당황 스럽다. –