2009-10-05 2 views
1

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 \ 웹 서버 그룹의 구성원입니다. 여기

내가 이해하지 못하는 내용은 다음과 같습니다

  1. 이 때 .NET이 File.Exists를 조회하려고, 그것은 사용중인 스레드 또는 과정 정체성인가?
  2. 프로세스 자격 증명을 사용하는 경우 프로세스을 MYDOMAIN \ my.username으로 실행하거나 NETWORK SERVICE 계정에 파일 읽기 권한을 부여하려면 어떻게해야합니까? (컴퓨터 계정을 추가하여 이미이 작업을 완료했다고 생각했지만 작동하지 않습니다 ...)
  3. 스레드의 자격 증명을 사용하는 경우 - 파일을 읽을 수없는 이유는 무엇입니까?

모든 유용한 포인터 또는 유용한 디버깅 정보를 보내 주시면 감사하겠습니다.

감사합니다,

딜런 이러한 상황에서

+0

어떤 버전의 프레임 워크를 사용하고 있습니까? –

+0

Windows 7 x64 RC에서 개발하고 Windows Server 2008 x86에 배포하는 .NET Framework v3.5를 사용하고 있습니다. –

+0

트리 서식 지정 프로세스 {...} TOKEN ?? – Kiquenet

답변

2

나는 항상 Sysinternals 프로세스 모니터를 해고하고 문제의 파일을 필터링합니다. 거기에서 실제로 파일에 액세스하는 계정을 확인할 수 있습니다.

일반적으로 가장하지 않는 경우 응용 프로그램 풀을 실행하는 계정이 사용됩니다. 응용 프로그램 풀 계정이란 무엇입니까?

질문 2 : Explorer에서 마우스 오른쪽 단추로 클릭하고 선택한 사용 권한을 사용하여 파일에 대한 올바른 사용 권한을 설정할 수 있습니다. 여기에서 네트워크 서비스 계정을 추가하고 읽기 권한을 부여 할 수 있습니다.

실행중인 OS는 무엇입니까? OS에 따라 기본 응용 프로그램 풀 계정이 네트워크 서비스 또는 AppPoolIdentity이므로 올바른 응용 프로그램 풀 계정을 확인하십시오.

+0

Process Monitor를 사용해 본적이 없었습니다. ASP.NET Impersonation과 다른 여러 요소가 복합적으로 작용하는 것으로 밝혀졌지만 프로세스 모니터는 진행 상황을 추적하는 데 절대적으로 도움이되었습니다. –

+0

@DylanBeattie - 문제가 무엇인지 기억합니까? 나는 정확히 똑같은 문제가 될 수 있다고 생각하고있다. http://stackoverflow.com/questions/15212386/file-exists-returns-false-in-active-directory-environment – lhan