安全的WCF服务

4

我对使用WCF服务非常陌生。目前我有一个WCF服务,我使用jQuery进行调用。我担心用户会进行未经授权的调用。那么如何最好地保护我的服务呢?

2个回答

3
如果这是一个浏览器应用,并且您担心安全问题,那么您可能已经有某种身份验证机制 (cookies,sessions 或其他)。所有这些都可以通过 WebOperationContext.Current.IncomingRequest 属性从 WCF 服务中访问(我假设您正在使用 webHttpBinding 或 basicHttpBinding?)。您可以从服务代码中检查/验证 cookie(或其他内容),或编写一个跨切面的 MessageInspector,在服务行为上应用该检查到所有方法。如果您使用 兼容性标志 托管服务,WCF 服务也可以与传统的 ASP.NET 身份验证 (表单等) 集成。浏览器应用程序正常登录,您的服务可以使用凭证/令牌/其他内容。

我可以在jQuery请求中发送ASP.NET_SESSID值,但是一旦到达另一端,如何使用cookie值验证会话?目前,我正在使用JSON进行响应和请求。 - Matt
如果你在IIS中使用.svc托管WCF服务,则浏览器已经发送了ASP.NET会话cookie(假设您有一个)。只需打开ASP.NET兼容性模式,并在您的服务代码中查看HttpContent.Current.Request.User(或任何其他您想要的东西)。 - nitzmahone
我尝试了你建议的方法,但是HttpContext.Current返回了null引用。你能否对这个问题提供一些启示?我的ServiceContract已经设置了AspNetCompatibilityRequirements属性类为Allowed。 - Matt
你仍然需要在服务配置中打开兼容模式 - 属性只是允许你的服务在其打开的情况下访问它。在system.serviceModel下的config文件中添加<serviceHostingEnvironment aspNetCompatibilityEnabled=”true” />。 - nitzmahone
太棒了,现在我可以访问我需要的一切。谢谢! - Matt

0

你可以使用证书在客户端和服务器两端签署WCF消息(这都在WCF设置中)。

以下是一些详细的解释:

消息安全


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