在Silverlight 4中保存用户登录名

时间:2010-11-23 15:42:28

标签: c# silverlight security

我有一个Silverlight 4应用程序,它与WCF服务进行通信。用户需要登录才能访问WCF服务。

现在我想阻止用户每次启动silverlight应用程序时重新输入用户名和密码。实现这一目标的最佳方法是什么?我想过要保存用户名/(哈希)passowrd的cookie,但是cookie无法处理Unicode,密码也保存为Unicode。

你会建议什么?

提前致谢,
弗兰克

4 个答案:

答案 0 :(得分:2)

嗯,你可以做一些事情,比如在第一次登录后,将其凭证保存在隔离存储中的加密格式中。当SL开始拉起并将其传递给服务进行验证然后登录。

答案 1 :(得分:1)

答案 2 :(得分:1)

另一种方法是存储GUID(如果可用)。

例如,如果您的数据库架构看起来像这样......

user_id (UniqueIdentifier, primary key)
username (varchar)
password_hash (varchar)
password_salt (varchar)

然后我将user_idusername存储在IsolatedStorage中。当用户返回这些变量时,将传递给WCF服务中的特殊函数进行身份验证。

只要user_id永远不会显示给用户,那么这可以是一种安全的方法,不会泄露密码。顺便说一下,我最初想出的是一个使用OpenID的网站,因此没有密码。

答案 3 :(得分:0)

由于这是一个Silverlight应用程序,为什么不让ASP.NET为您处理身份验证?您仍然可以保护您的WCF服务仅与经过身份验证的用户一起使用。 Here's an excellent article on the subject.

修改

我应该提一下,在本文中,作者为用户名/密码添加了自定义消息头。我刚刚用检查HttpContext.Current.User是否经过身份验证来替换该逻辑,如果是,则允许访问该服务。

相关问题