我的情况是我有一个Web服务,提供需要保护的数据(图像,媒体等),以便只能由相应的Silverlight客户端访问。可能有很多,有些人可以访问某些媒体,有些可以访问其他媒体。
Web服务存在且它当前是.asmx,但我们将把它升级到WFC。
到目前为止,在阅读了很多关于WCF和授权的博客之后,我发现了这个想法:
据我所见,我认为这应该是安全的,但请随意挖洞!
唯一让我感到困惑的是我的研究对于使用WCF进行身份验证和授权非常有利,但对我而言,它对我所需要的东西感觉太复杂了!更别说了解复杂的客户端配置文件如何适用于访问WCF服务的Silverlight应用程序。
无论哪种方式,根据我的理解,使用WCF身份验证至少需要一个用户名和密码或证书,这两者都感觉非常笨拙,而不仅仅是提供一个不错的客户端密钥。
我的想法是否安全可靠,或者我应该坚持使用我的WFC学习,因为框架是更好的解决方案?
如果首选WCF安全框架,是否有任何高级建议可以告诉我保护我的Web服务需要哪种流程?
期待听到人们的建议和经验! :)
非常感谢!
安迪
答案 0 :(得分:0)
这种方式并不安全,因为Silverlight是客户端技术,因此SL控件及其配置都存储在用户计算机上。因此任何用户都可以自由访问/更改密钥
自定义会话是处理任务的最安全方式
例如:
身份验证/授权可以使用标准(或自定义,您应该随意实现某些特定提供者)角色/成员资格提供程序来实现。在客户端进行身份验证后,它会收到服务器生成的会话令牌(例如guid)。服务器端数据库中的相同guid存储(例如,在存储所有角色,用户等的数据库中)
每个会话令牌都已到期(使用DB agents / tasks / sheduler从数据库中删除过期的密钥)
因此,每次客户端请求某些资源时,它都会向服务器发送其会话令牌以及其他请求参数。在DB中接收到请求服务器搜索相同会话令牌之后,如果存在令牌,则提供对所请求资源的访问。否则验证失败。
自定义会话非常复杂,但同时也是处理身份验证操作的最安全方式。如果您对此有任何疑问,请随时问我。