ASP.NET에서 일반적으로 혼동되는 두 가지 사항이 있습니다.
- "사용자 ID"-사용자 계정 인증은 실제로 II와 ASP.NET에서 모두 실행되는 계정이나 ID와 관련이 없습니다. 익명 인증을 사용하면 모든 사용자가 클라이언트 브라우저에 사용자 이름과 암호를 입력하지 않고도 공개 컨텐츠에 액세스 할 수 있습니다. IIS에서 기본적으로 인증되는 익명의 IUSR 계정은 공개 웹 사이트 컨텐츠에 대한 액세스 만 적용합니다. 기본 II 또는 ASP.NET 서비스에서 사용하는 프로세스 나 리소스에는 영향을 미치지 않습니다.
- "응용 프로그램 ID"-실제로 IIS 및 ASP.NET에서 실행되는 서버의 실제 "WindowsIdentity"계정입니다.이 계정은 IIs에 의해 풀에 할당되고 ASP.NET에 제공되는 응용 프로그램 풀 ID 계정입니다. ASP.NET 프로세스는 기본적으로이 응용 프로그램 풀 ID 계정 (IIs 버전 7.5 이상의 가상 계정이라고 함)에서 실행됩니다.
설명 : 첫째, ASP.NET의 "인증"은 일반적으로 web.config에 설정된 이벤트로, 주어진 사용자 계정에 IIs에 의해 일반 HttpContext 객체로 ASP.NET에 사용자 토큰으로 전달됩니다 ... 즉, 현재 사용자의 현재 세션 또는 컨텍스트. 실제로 ASP.NET 프로세스를 실행하는 WindowsIdentity를 변경하지 않고 사용자 ID 토큰을 전달합니다. HttpContext를 사용하면 코드에서 해당 ID 또는 이름을 사용하여 웹 사이트의 다양한 섹션에 대한 데이터베이스 권한을 저장할 수 있습니다. 그러나 ASP.NET은 IIs에서 ASP.NET을 실행하는 실제 응용 프로그램 "프로세스"계정의 ID에 영향을 주거나 변경하지 않기 때문에 ASP.NET의 파일 액세스에는 영향을 미치지 않습니다.
"Impersonation"을 수행하여 ASP에 의해 IIs에 의해 전달 된 토큰을 가장 한 다음 해당 계정 ID로 실행하도록 지시 할 때까지 이러한 상황이 발생하지 않습니다. web.config에서 가장을 설정할 수 있습니다. ASP.NET에서 가장을 활성화하면 WindowsIdentity는 작업자 프로세스에서 인증 된 계정이 IIS에서 ASP.NET으로 전달되는 모든 항목으로 변경되며 해당 사용자 계정에 할당 된 권한에 따라 파일에 액세스 할 수 있습니다. 이 상황이 발생하면 ASP.NET은 현재 II 버전의 기본 프로세스 ID로 다시 되돌려 주어진 응용 프로그램 풀에 할당 된 응용 프로그램 풀 ID 계정으로 되돌릴 수 있습니다.
IIs가 ASP.NET에 명시 적 인증이 설정되지 않은 일반 익명 사용자 계정 만 사용하는 경우 IIs는 기본적으로 웹 사이트에 할당 된 응용 프로그램 풀의 응용 프로그램 풀 ID 계정을 시작하여이를 ASP.NET 및이를 실행하는 작업자 프로세스에 전달합니다. 해당 응용 프로그램 풀 ID 계정은 IIS에 대한 모든 요청을 처리하고 해당 사이트에 대해 ASP.NET을 실행합니다.
IIs가이 설정에서 시작되고 사용자가 액세스하면 실제로는 기본적으로 웹 페이지 및 기타 기본 리소스에 대한 액세스를 결정하는 익명의 IUSR 계정을 백그라운드에서 인증합니다. 그러나 해당 계정은 ASP.NET으로 전달되지 않습니다. 또한 IIS가 실행되는 ASP 및 NET의 응용 프로그램 풀 ID에는 영향을 미치지 않습니다.
web.config에서 Impersonate를 "true"로 설정하고 공개 액세스를 위해 II의 기본 익명 IUSR 계정을 사용하고 있으며 Windows를 사용하는 대신 web.config에서 anonymousAuthentication 특성을 명시 적으로 true로 설정 한 경우 또는 다른 로그인 계정)의 경우 II는 응용 프로그램 풀 ID를 가져오고 II와 ASP.NET은 이제 익명의 IUSR 인증 및 가장 된 계정으로 응용 프로그램 프로세스를 실행합니다.
그렇게하면 ASP.NET과 해당 프로세스가 이제 IUSR 계정으로 실행됩니다. 즉, ASP.NET의 응용 프로그램 프로세스는 WindowsIdentity 계정을 IUSR 계정으로 실행합니다. 이제 해당 익명 IUSR 계정과 해당 계정이 액세스 할 폴더에 대한 읽기 / 쓰기 액세스 권한을 적용 할 수 있습니다. (참고 : 기본 프로세스 계정, 풀의 응용 프로그램 풀 계정, 권한 및 해당 폴더에 대한 권한을 추가해야합니다. 이는 Microsoft의 권장 사항에 따릅니다)
행운을 빕니다!