我正在研究一个解决方案,我有一个 WPF 项目,该项目使用位于另一个 ASP .NET 项目中的 WCF DataService 来访问数据。
我需要提供一定程度的安全性,以确保只有经过身份验证的用户才能访问该服务。在网上冲浪后,我已经打破了我的头试图实现这一点。实现它的正确方法是什么?
问问题
253 次
1 回答
2
过去我这样做过,WCF 的Login
方法会创建一个用户对象,为用户对象分配一个 Token(在我的情况下,它是一个 GUID),并将其存储在 WCF 服务器内部的一个AuthenticatedUsers
列表中。
任何其他 WCF 调用都需要令牌作为参数。它将检查AuthenticatedUsers
列表中是否存在具有该令牌的用户,如果不存在具有该令牌的用户,则会返回错误。一个额外的好处是我总是可以知道谁进行了 WCF 调用,而无需他们传递用户 ID。
我还在LastActivity
服务器上存储了一个带有用户对象的 DateTime。每个 WCF 调用都会刷新此值,并且AuthenticatedUsers
如果 WCF 服务器上的列表至少有一个值,则在服务器上运行一个计时器,它将检查 AuthenticatedUsersLastActivity
值并在用户处于非活动状态超过 20 分钟时删除用户。
于 2011-11-05T16:31:20.617 回答