Ви бачите дві речі, які зазвичай плутаються в ASP.NET:
- "ідентифікація користувача" - автентифікація облікового запису користувача не має нічого спільного з обліковим записом або особою, яка фактично працює під II та ASP.NET. Анонімна автентифікація дозволяє будь-якому користувачеві отримати доступ до будь-якого загальнодоступного контенту, не надаючи клієнтському браузеру ім'я користувача та пароль. Анонімний обліковий запис IUSR, який за замовчуванням отримує автентифікацію в IIS, просто застосовує доступ до вмісту загальнодоступних веб-сайтів. Це не впливає на процеси або ресурси, які використовуються в основі II-служб або ASP.NET-служб.
- "ідентифікація програми" - це фактичний обліковий запис "WindowsIdentity" на сервері, який фактично працює за IIS та ASP.NET, що є обліковим записом ідентифікації пулу додатків, присвоєному пулу II і наданим ASP.NET. Ваш процес ASP.NET за замовчуванням працює в цьому обліковому записі ідентифікації пулу додатків (називається віртуальним обліковим записом у версіях II версії 7.5+).
Пояснення: По-перше, "автентифікація" в ASP.NET - це лише подія, яка зазвичай встановлюється в web.config, яка входить у певний обліковий запис користувача, який передається як ток користувача IIs ASP.NET як звичайний HttpContext об'єкт ... тобто поточний сеанс або контекст поточного користувача. Він насправді не змінює WindowsIdentity, який запускає процес ASP.NET, просто передає йому маркер ідентифікатора користувача. Використовуючи HttpContext, ваш код може використовувати цей ідентифікатор або ім'я для зберігання прав на базу даних у різних розділах вашого веб-сайту. Але це не буде впливати на доступ до файлів через ASP.NET, оскільки це не впливає і не змінює ідентичність фактичного облікового запису "процес", який запускає ASP.NET під II.
Це не відбувається, поки ви не зробите "Імперсонація", яка скаже ASP.NET видавати себе за все, що маркер передається йому II, а потім запускається під цим ідентифікатором облікового запису. Ви можете встановити себе в своїй веб-конфігурації. Якщо ви активізуєте себе в ASP.NET, тоді WindowsIdentity змінюється на робочому процесі на той, який засвідчується автентифікованим обліковим записом, передається ASP.NET з IIS, і ви можете потім отримувати доступ до файлів, виходячи, звичайно, з прав, які вам призначені для цього облікового запису користувача. Важливо відзначити, коли це відбувається тимчасово, і ASP.NET може повернутись до своєї ідентичності процесу за замовчуванням, яка є в поточних версіях IIs, знову обліковий запис ідентифікації пулу додатків, призначений даному пулу додатків.
Коли IIs просто використовує звичайний анонімний обліковий запис користувача без встановленого явного аутентифікації в ASP.NET, IIs запускається за замовчуванням призначеного веб-сайту облікового запису Pool Application Pool Identity Pool та передає його ASP.NET та робочому процесу, який працює за ним. Цей обліковий запис ідентифікації пулу додатків обробляє всі запити для IIS та запускає ASP.NET для цього сайту.
Коли IIs запускається під цією установкою та доступ до нього користувач, він фактично аутентифікує за кадром за замовчуванням анонімний рахунок IUSR, який визначає доступ до веб-сторінок та інших основних ресурсів. Але цей рахунок НЕ передається ASP.NET. І це не впливає на запуску IIS Identity Pool Application, під яким працює ASP.NET.
Якщо ви встановите Impersonate на "true", скажімо, у своїй web.config, і ви використовуєте за замовчуванням анонімний обліковий запис IUSR в II для загальнодоступного доступу, і ви встановлюєте явно справжню властивість anonimnaAuthentication у web.config (замість використання Windows або інший обліковий запис для входу), II будуть викидати ідентифікатор пулу додатків та II, і тепер ASP.NET запустить свої процеси застосування як анонімний обліковий запис, що підтверджується автентичністю IUSR, і імперсмен.
Коли ви зробите це, ASP.NET і його процеси тепер працюватимуть під обліковим записом IUSR .... тобто процес додатків ASP.NET запустить свій акаунт WindowsIdentity як обліковий запис IUSR. Тепер ви можете застосувати доступ для читання / запису до цього анонімного облікового запису IUSR та до папок, до яких цей обліковий запис має доступ. (Примітка. Не забудьте додати обліковий запис процесу за замовчуванням, обліковий запис пулу додатків для пулу, а також права до цих папок. Це відповідно до рекомендацій Microsoft)
Щасти!