2011-01-07 137 views
1

我有一个情况我有一个Web服务,数据服务(图像,媒体等)的需要,以便它只能通过相应的Silverlight客户端进行访问。可能有很多,有些可以访问某些媒体,有些可以访问其他媒体。身份验证+ Authroizing Silverlight客户端以WCF的Web服务

网络服务存在,它是当前的.asmx,但我们将要升级到WFC。

到目前为止,阅读大量关于WCF和授权的博客后,我来到这个想法:

  1. 每个Silverlight客户端在其配置的某处有一个客户端密钥。
  2. Web服务服务器通过SSL进行安全保护,因此客户端ID被加密为Web服务参数。
  3. 验证通过客户端密钥完成。
  4. 授权通过客户端密钥完成。

据我所知,我认为这应该是安全的,但请随时戳洞!

是错误我是从我的研究有这么多有利于对使用WCF进行身份验证和授权,但对我来说,只是感觉我需要什么太复杂的唯一的事情!更不用说理解复杂的客户端配置文件如何适用于访问WCF服务的Silverlight应用程序。

无论哪种方式,从我的理解,使用WCF认证至少需要一个用户名和密码或证书,这两种感觉真的很笨拙,在刚刚给予了一个很好的客户端密钥来代替。

我的想法是否安全可靠,还是应该坚持我的WFC学习,因为框架是更好的解决方案?

如果安全WCF框架是首选,有没有高水平的建议可以给你我为我需要保护我的web服务什么样的流程?

期待听到人们的意见和经验! :)

非常感谢!

安迪

回答

0

这种方式并不安全,因为Silverlight是客户端技术,这样既SL控制,并在用户计算机的配置存储。所以任何用户都可以自由访问/更换密钥。
自定义会话是处理任务最安全的方式。
例如:
认证/授权可以使用标准(或自定义,您应该随时实施某些特定的提供者)角色/成员资格提供者来实现。客户端通过身份验证后,会收到服务器生成的会话令牌(例如guid)。服务器端数据库中的相同guid存储(例如存储所有角色,用户等的数据库中)。
每个会话令牌都已到期(使用DB代理/任务/ sheduler从数据库中删除过期的密钥)。
因此,每次客户端请求某些资源时,它都会向服务器发送其会话令牌以及其他请求参数。在数据库中接收到请求服务器搜索相同的会话令牌后,如果令牌存在,请提供对所请求的资源的访问。否则认证失败。

自定义会话非常复杂,但在同一时间处理身份验证操作的最安全方式。随意问我,如果你有关于它的一些问题。

+0

啊,关于SL是客户端的好点!完全忘记了影响。我想我理解你的想法,星期一我会多一点想一想。 :) – Andy 2011-01-08 12:13:06

相关问题