Мне было интересно, успешно ли кто-нибудь использовал DPAPI с хранилищем пользователей в среде веб-фермы?
Поскольку наше приложение недавно преобразовано из приложения ASP.NET из 1.1 в 2.0, мы используем специальную оболочку, которая напрямую вызывает методы CryptUnprotect
. Но это должно быть так же, как метод ProtectedData
, доступный в платформе 2.0.
Поскольку мы работаем в среде веб-фермы, мы не можем гарантировать, что машина, которая выполняла шифрование, будет той, которая ее расшифровывает. (Также, потому что сбои машины не должны разрушать наши зашифрованные данные).
Итак, у нас есть обслуживаемый компонент, который работает в службе под определенной учетной записью пользователя в каждом из наших веб-блоков. Этот пользователь настроен на использование роумингового профиля в соответствии с рекомендацией.
Проблема, с которой мы столкнулись, заключается в том, что информация, зашифрованная на одном компьютере, не может быть расшифрована на другом, это происходит с ошибкой win32:
«Ключ недействителен для использования в указанном состоянии».
Я подозреваю, что это связано с тем, что я допустил ошибку, запустив службу шифрования в качестве пользователя на нескольких компьютерах, и, следовательно, оставил пользователя в системе одновременно на нескольких машинах.
Если это проблема, как другие используют DPAPI с хранилищем пользователей в среде веб-фермы?