I have a Silverlight 3 application that connects to a server to perform various actions. My users are logged in using forms authentication, but the actions they request are triggered on the server using the AppPool account, so when they log into the audit logs, they are logged into the AppPool account. PCI DSS rules now require that the user's own identifier be in the audit logs, which means that the action must be performed using user credits. Now I can save user accounts when they log in and send them with each request, and the actions taken by the server can use these loans. But PCI regs say that if creds are saved, they must be encrypted (to avoid having someone take a memory dump on a PC and get a password).
The only way I can do this is to get the public key from the server and encrypt it using a password, and then send the encrypted password and decrypt it on the server using the private key. But Silverlight does not have asymmetric cryptography.
I think I'm too close to the problem, and there should be a different solution, but I donโt see what it is. Can anyone help?
EXPLANATIONS
This is an internal application. So far I have used IIS Forms AuthN over SSL in Active Directory - I do not worry about password protection in transit while it is stored in memory on the client. As far as I understand, since I use forms-based authentication, there can be no impersonation on the server unless I use LogonUser, which means that I need a password on the server, so I need to transfer it every time, so I need to hold it in the client, in memory, until the application closes.
source share