나는 가장 위대한 문제를 겪었으며, 어떤 ASP.NET 전문가가 무슨 일이 일어나고 있는지에 대한 단서를 줄 수 있기를 바라고 있습니다.통합 Windows 인증이 깨졌습니다 File.Exists
IIS 6.0에서 실행되는 ASP.NET 웹 사이트가 있습니다. 그것에, 나는 .asmx 웹 서비스가있다. .asmx webservice에서 네트워크 공유에 파일이 있는지 확인하려면 System.IO.File.Exists()
을 사용합니다. 이 사이트는 가장 (impersonation)을 사용합니다.
다음은 대규모 키커입니다. 기본 인증을 사용하여 사이트를 실행하도록 IIS를 설정하면 File.Exists 줄이 True를 반환합니다. Windows 통합 인증으로 설정하면 False를 반환합니다. 나는 다른 것, 나는 앞뒤로 바꿀 수 있고 똑같은 일이 일어난다. File.Exists()
에 전화하기 전에 일부 정보를 로깅합니다. 사실 User.Identity.Name
과 System.Security.Principal.WindowsIdentity.GetCurrent().Name
은 설정에 관계없이 정확한 이름을 반환합니다 (찾고있는 파일에 대한 액세스 권한이있는 내 계정).
내가 시도했지만 솔직히, 문제에 영향을 미치지 않아야하는 한 가지 설정이 문제인이 상황에서 무엇을 시도 할 수 있습니까? 나는 가장을 껐다가 시도했다. 그리고 그것은 또한 File.Exists()
호출을 True로 만든다. 내 자신의 사용자가 appPool을 실행하는 계정보다 훨씬 더 높은 권한을 갖고 있기 때문에 내 마음이 뜨겁다.
이 문제를 해결하기 위해 내가 조사 할 수있는 아이디어가 있습니까?
불행히도 이런 종류의 위임을 설정할 수 없기 때문에 적어도 File.Exists 문제를 해결하는 기본 인증으로 실행해야합니다. 슬프게도 배경 문제는 다른 서버 (파일 공유가있는 서버)에서 webservice를 호출 할 수 없다는 것입니다. 왜냐하면 401 Unauthorized를 얻게 되었기 때문입니다. 유감스럽게도 기본 인증은 위임 문제처럼 보일지라도이 문제를 해결하지 못합니다. – Tobberoth
Kerberos 위임이 없으면 자격 증명을 다른 IIS 서버로 전달할 수 없습니다. 이는 IIS의 제한 사항이며 이중 홉 문제라고도합니다. – NoviceProgrammer
@ tobberoth, 세션 변수 중 하나이므로 Basic 인증 세션에서 암호를 찾을 수 있습니다.그러면 다른 웹 서비스에 대한 명시 적 기본 인증 연결을 설정할 수 있습니다. – Ben