Windows 인증을 사용하는 ASP.NET 앱이 있는데 원격 서버에 파일이 있는지 테스트하고 있습니다.ASP.NET에서 File.Exists()가 false를 잘못 반환했습니다. 스레드와 프로세스 ID에 관련된 보안 문제가 있습니까?
MYDOMAIN \ my.username으로 인증합니다.이 방법이 효과적입니다.
파일은 \ MYSERVER \ WebShare \ example.txt입니다. 이 파일이 존재합니다. MYDOMAIN \ my.username으로 로그인되어있는 동안 다양한 호스트에서 열 수 있습니다. Windows 탐색기에서 유효 사용 권한은 MYDOMAIN \ my.username이이 파일을 완전히 제어 할 수 있음을 나타냅니다. 나는 시계 창에서 디버거를 입력 $user
를 연결하는 경우
, 나는 현재 스레드이 여전히 NT AUTHORITY\NETWORK SERVICE
으로 실행되고있는 현재 과정 동안, MYDOMAIN \의 my.username로 실행되는 것을 볼 수 있습니다 - 관련 비트를 시계 화면의 아래의 재현 :
$user {...} $user register
+- Process {...} TOKEN
| +- Name NT AUTHORITY\NETWORK SERVICE User Name
| +- User SID S-1-5-20 SID
| +- Session Id 0 DWORD
| +- Loggin Id 000003e4-00000000 LUID
| +- Impersonation Level N/A (not impersonating) SECURITY_IMPERSONATION_LEVEL
+- Thread {...} TOKEN
+- Name MYDOMAIN\my.username User Name
+- User SID S-1-5-21-... SID
+- Session Id 0 DWORD
+- Loggin Id 018622ef-00000000 LUID
+- Impersonation Level Impersonate SECURITY_IMPERSONATION_LEVEL
ASP.NET을 실행중인 서버는 다시 공유 파일의 모든 권한을 가지고있는 MYDOMAIN \ 웹 서버 그룹의 구성원입니다. 여기
내가 이해하지 못하는 내용은 다음과 같습니다
- 이 때 .NET이 File.Exists를 조회하려고, 그것은 사용중인 스레드 또는 과정 정체성인가?
- 프로세스 자격 증명을 사용하는 경우 프로세스을 MYDOMAIN \ my.username으로 실행하거나 NETWORK SERVICE 계정에 파일 읽기 권한을 부여하려면 어떻게해야합니까? (컴퓨터 계정을 추가하여 이미이 작업을 완료했다고 생각했지만 작동하지 않습니다 ...)
- 스레드의 자격 증명을 사용하는 경우 - 파일을 읽을 수없는 이유는 무엇입니까?
모든 유용한 포인터 또는 유용한 디버깅 정보를 보내 주시면 감사하겠습니다.
감사합니다,
딜런 이러한 상황에서
어떤 버전의 프레임 워크를 사용하고 있습니까? –
Windows 7 x64 RC에서 개발하고 Windows Server 2008 x86에 배포하는 .NET Framework v3.5를 사용하고 있습니다. –
트리 서식 지정 프로세스 {...} TOKEN ?? – Kiquenet