WCF/jQuery安全性

3

我有一组启用了AspNetCompatibility的WCF服务,并从jQuery中使用它们。我的Web应用程序需要进行身份验证。仅使用逻辑(因为我缺乏足够的知识),这意味着WCF只能被当前已登录的用户访问和限制吗?我知道一个人可以捕获通信数据并尝试稍后重用它(我没有ssl),但他必须已登录。

对还是错,或者只是我的乐观主义愚蠢?

1个回答

1

是的,因为您启用了ASP.NET兼容性并且正在使用ASP.NET安全性,只要WCF资源具有正确的<authorization>设置,它就应该受到ASP.NET安全性的保护。至少,这意味着您应该在WCF资源上定义如下授权:

<authorization>
    <deny users="?" /> <!-- deny all anonymous users -->
    <allow users="*" /> <!-- allow all authenticated users -->
</authorization>

只有允许使用 "*",你的 WCF 服务才对非认证用户不可用。
你可以在这篇 MSDN 文章中的 在 ASP.NET 兼容模式下托管 WCF 服务 部分阅读更多信息,点击这里

这可能存在安全风险,因为您现在可以在未经身份验证的情况下使用WCF服务。根据它们所做的事情,这可能是巨大的风险。 - Simon Halsey
我不确定我理解你的意思。我并不是在建议权限应该是什么,只是提供了一个使用ASP.NET来保护它们的基本示例。当然,您应该指定适合您的服务的正确用户/角色列表,使用“?”将防止非经过身份验证(匿名)的用户访问该服务。 - Drew Marsh
1
你上面的代码会允许匿名用户,而不是拒绝他们。我想你的意思是<deny users="?">。 - Simon Halsey
Simon,谢谢。我已经有一段时间没有涉及授权部分了。你是正确的,我把*和?搞反了。我会更新我的答案。 - Drew Marsh
1
你需要反转顺序。在拒绝之前,允许*将匹配吗? - Simon Halsey
哦,是的。我在日常实践中从来没有将ASP.NET授权与我的WCF服务混合使用,这一点显而易见了吗? ;P 如果我能给你一些我的积分,我会的,但至少我会点赞你的评论。 :) - Drew Marsh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接