У меня есть приложение Silverlight 3, которое подключается к серверу для выполнения различных действий. Мои пользователи входят в систему с использованием проверки подлинности с помощью форм, но запрашиваемые ими действия выполняются на сервере с использованием учетной записи AppPool, поэтому при входе в журналы аудита они записываются с учетной записью AppPool. Правила PCI DSS теперь требуют, чтобы собственный идентификатор пользователя был в журналах аудита, что означает, что действие должно быть выполнено с использованием кредитов пользователя. Теперь я могу сохранять кредиты пользователей при входе в систему и отправлять их с каждым запросом, и действия, выполняемые сервером, могут использовать эти кредиты. Но представители PCI говорят, что если кредиты сохранены, они должны быть зашифрованы (чтобы никто не взял дамп памяти компьютера и не получил пароль).
Единственный способ сделать это - получить открытый ключ от сервера и зашифровать его, затем отправить зашифрованный пароль и расшифровать его на сервере с помощью закрытого ключа. Но у Silverlight нет асимметричной криптографии.
Я думаю, я слишком близко к проблеме, и должно быть другое решение, но я не вижу, что это такое. Кто-нибудь может помочь?
ПОЯСНЕНИЯ
Это внутреннее приложение. До сих пор я использовал AuthN IIS Forms через SSL для Active Directory - я не беспокоюсь о защите пароля при передаче, пока он хранится в памяти клиента. Насколько я понимаю, поскольку я использую проверку подлинности с помощью форм, олицетворение на сервере невозможно, если я не использую LogonUser, что означает, что мне нужен пароль на сервере, поэтому мне нужно каждый раз передавать его, поэтому мне нужно его удерживать в клиенте, в памяти, пока приложение не закроется.