面向公众的服务器安全性上的内部 WCF 服务

Posted

技术标签:

【中文标题】面向公众的服务器安全性上的内部 WCF 服务【英文标题】:Internal WCF Service on a public facing server security 【发布时间】:2012-06-01 05:11:09 【问题描述】:

我需要托管一个 WCF 服务,该服务将允许其客户访问面向公众的 Web 服务器上的内部业务系统。显然,我必须确保这一点,以使外界甚至都不知道该服务的存在,更不用说能够调用方法和访问它公开的数据了。

总体思路是,托管在同一台机器上的面向公众的网站将调用 WCF 服务,然后 WCF 服务将为它提供所需的数据...

Public Facing Web Site <-> WCF Service <-> Business Systems / Databases

所以我需要了解如何保护服务,使其只能通过面向公众的网站访问。

我的想法..

IIS 过滤,以便托管 WCF 服务的 IIS 站点仅接受来自特定 IP 地址的请求。 不允许通过面向公众的防火墙的模糊端口。 NetTCP 或 NamedPipes 等协议

但是实际的 WCF 安全设置呢?由于面向公众的站点和服务都在同一台机器上,Windows 身份验证是选项吗?我对此的疑问是......

服务客户端和服务是否应该简单地使用 Windows 身份验证?

我需要特定的用户帐户而不是网络服务吗?如果网站在网络服务下运行,这是否会自动对服务进行身份验证?

我的目标是外部世界的某个人不应该知道服务的存在或能够访问它。

提前致谢。

技术环境为:IIS7、.Net 4 和 WCF 4。

【问题讨论】:

【参考方案1】:

我建议您创建一个 http 处理程序“.ashx”并将其用作客户端请求的端点。

如果您使用 asp.net,您可以通过使用简单表单身份验证并从请求标头中检索用户名和密码来对请求进行身份验证来保护它。

然后执行对您的业务 Web 服务的任何请求,这些请求也受到您的表单身份验证的保护。

干杯

【讨论】:

以上是关于面向公众的服务器安全性上的内部 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章

Azure 应用服务 - 从另一方收到不安全或不正确安全的故障。查看内部的 FaultException - Wcf

ASP.NET 网站 + Windows 窗体应用程序 + WCF 服务:客户端凭据

WCF 服务的内部终结点不适用于 Azure Web 角色

WCF与WPF

WCF

WCF:未提供服务证书。在 ServiceCredentials 中指定服务证书