2011-11-05 55 views
5

我正在研究一个解决方案,其中有一个WPF项目使用位于另一个ASP .NET项目中的WCF DataService访问数据。
我需要提供一个安全级别,以确保只有经过身份验证的用户才能访问该服务。上网冲破了我的头脑,试图实现这一目标。什么是适当的方式来实现呢?WPF应用程序中的WCF dataservice安全

+0

创建用户令牌可能会有所帮助..您的问题很有趣:) –

回答

2

我过去在WCF的Login方法将创建一个用户对象,分配用户对象令牌这样做(在我的情况,这是一个GUID),和WCF服务器内部存储它在AuthenticatedUsers列表。

任何其他WCF调用都需要令牌作为参数。它会检查使用该标记的AuthenticatedUsers列表中是否存在用户,如果没有该标记的用户存在,则会返回错误。另外一个好处是我总是知道是谁创建了WCF调用而不需要他们传递用户ID。

我还将LastActivity DateTime与服务器上的用户对象存储在一起。每个WCF调用都会刷新该值,并且在WCF服务器上提供AuthenticatedUsers列表至少有一个值,服务器上运行的Timer会检查AuthenticatedUsers值,如果超过20分钟未激活,则删除该用户。