我有一组在公共Web环境中运行的.NET应用程序,它们连接到由网页和Web服务组成的集中组件。
有没有办法实现安全功能,使集中式网页确定来电应用程序的身份?发帖并提供一个查询调用程序应用程序的查询字符串参数是一个天真的解决方案,有人可以手动更改它。
有什么想法吗?请事先提前。
答案 0 :(得分:2)
为每个客户端 - 服务器对分配密钥,并使用它们签署在客户端和服务器之间传递的消息(例如,使用HMAC)。
答案 1 :(得分:1)
TLS / SSL / HTTP。您只需要启用客户端身份验证。 SSL通常仅用于需要对服务器进行身份验证的场景。但是服务器端也可以配置为对客户端进行身份验证。需要在两端安装数字证书。然后,它使用所有适当的加密来完成工作,即。公共认证,建立安全通道,使用Diffie-Hellman,RSA,AES / 3DES,无论你配置什么。
答案 2 :(得分:0)
查看this帖子。开始的好地方。 另一个选择,也许你看看OpenID?
答案 3 :(得分:0)
如果您使用http post与Web服务和网页进行通信,则应避免将信息放入查询字符串中。
通过https发送数据,以便无法使用。
然后,您需要确保呼叫来自您的公共网络环境。一种方法是根据应用程序池的标识使用Windows身份验证。
编辑1
请看一下这个链接:http://www.codeproject.com/KB/WCF/WCFBasicHttpBinding.aspx
它显示了如何为WCF基本http绑定设置Windows身份验证。
答案 4 :(得分:0)
目前情况:
服务器A,B和C受您信任和控制。访问者访问站点A并查看将数据发送到站点C的页面,并且数据包含类似“origin = A”的内容。我们担心用户会将其更改为“origin = B”。
一个简单的解决方法:
您可以控制所有三台服务器,因此请让它们进行通信以验证传入的数据。例如,A将“origin = A”更改为“origin = A& token = 12345”,其中令牌值是随机的。用户试图篡改它并将“origin = B & token = 12345”发送到服务器C.C与B建立可信连接,说“你发送了吗?有人给我12125令牌?“ B说“不”,C知道拒绝请求。
根据您的需要以及您是否使用https,这可以任意详细说明。也许令牌在一段时间后过期。也许他们与IP地址联系在一起。关键是服务器C使用服务器A和B验证来自最终用户的任何信息。
答案 5 :(得分:0)
您是否在询问单点登录? (即,在AppA上进行身份验证的人员也应该能够使用AppB和AppC而无需重新进行身份验证)
您可以configuring the machineKey for your apps so they can share asp.net authentication tokens执行此操作。
答案 6 :(得分:0)
我目前工作的公司目前在整个企业中使用共享表单身份验证Cookie,方法是在每个Web服务器上使用相同的计算机密钥。但是,如果您希望跨越不同的域进行SSO并且对于需要进入Web场以使用Web服务方法的Windows应用程序来说,这不是很理想...
因此,我们必须执行此操作,我们正在使用SAML
但为了清理这一切并使其更加统一和安全,我们开始实施Geneva
答案 7 :(得分:-1)
也许看看HTTP REFERER字段。在某些条件下,这可能被视为可靠。特别是:A模仿站点不会根据HTTP REFERER将用户从A发送到C.