2

나는 가장 위대한 문제를 겪었으며, 어떤 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.NameSystem.Security.Principal.WindowsIdentity.GetCurrent().Name은 설정에 관계없이 정확한 이름을 반환합니다 (찾고있는 파일에 대한 액세스 권한이있는 내 계정).

내가 시도했지만 솔직히, 문제에 영향을 미치지 않아야하는 한 가지 설정이 문제인이 상황에서 무엇을 시도 할 수 있습니까? 나는 가장을 껐다가 시도했다. 그리고 그것은 또한 File.Exists() 호출을 True로 만든다. 내 자신의 사용자가 appPool을 실행하는 계정보다 훨씬 더 높은 권한을 갖고 있기 때문에 내 마음이 뜨겁다.

이 문제를 해결하기 위해 내가 조사 할 수있는 아이디어가 있습니까?

답변

4

OK 무슨 일이 일어나고 있는지 서버가 대표 인증을 할 수 없다는 것입니다. 즉, 사용자를 대신하여 다른 서버에 대해 작동 할 수 없으며 자체 서버에만 적용됩니다.

위임은 서버가 기본 인증의 일부로 암호를 말했기 때문에 암호를 알고 있기 때문에 기본 인증에 문제가되지 않으므로 원격 컴퓨터에 인증을 수행 할 수 있습니다.

Active Directory/Kerberos 환경에있는 경우 위임에 대해 신뢰할 수있는 서버를 으로 구성해야합니다. 필자는이 작업을 한 번도 해보지 않았으므로 정확한 방법은 모르지만 프로그래밍이 아니라 구성의 문제입니다. 구성에 따라 서버 컴퓨터 계정이나 IIS ID 또는 둘 다를 구성해야 할 수 있습니다.

일부 참조 여기를 참조하십시오 :

당신은 Kerberos 환경에서 하지을 경우에, 당신은 기본 인증을 사용하거나 일부에서 사용자의 암호를 받아야 하나 다른 방법으로 사용자를 가장하기 위해 LogonUser 번으로 전화하십시오. 기본 인증이 사용되거나 다른 방법으로 일반 텍스트 암호가 사용되면 물론 보안을 위해 HTTPS/TLS를 사용해야합니다.

+0

불행히도 이런 종류의 위임을 설정할 수 없기 때문에 적어도 File.Exists 문제를 해결하는 기본 인증으로 실행해야합니다. 슬프게도 배경 문제는 다른 서버 (파일 공유가있는 서버)에서 webservice를 호출 할 수 없다는 것입니다. 왜냐하면 401 Unauthorized를 얻게 되었기 때문입니다. 유감스럽게도 기본 인증은 위임 문제처럼 보일지라도이 문제를 해결하지 못합니다. – Tobberoth

+0

Kerberos 위임이 없으면 자격 증명을 다른 IIS 서버로 전달할 수 없습니다. 이는 IIS의 제한 사항이며 이중 홉 문제라고도합니다. – NoviceProgrammer

+0

@ tobberoth, 세션 변수 중 하나이므로 Basic 인증 세션에서 암호를 찾을 수 있습니다.그러면 다른 웹 서비스에 대한 명시 적 기본 인증 연결을 설정할 수 있습니다. – Ben

관련 문제