5

我正在研究一个解决方案,我有一个 WPF 项目,该项目使用位于另一个 ASP .NET 项目中的 WCF DataService 来访问数据。
我需要提供一定程度的安全性,以确保只有经过身份验证的用户才能访问该服务。在网上冲浪后,我已经打破了我的头试图实现这一点。实现它的正确方法是什么?

4

1 回答 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 回答