在DMZ中进行WCF用户名/密码验证的推荐方法是什么?

时间:2015-02-23 03:28:26

标签: c# wcf authentication ssl dmz

我希望通过互联网托管一组有限客户端可访问的WCF服务,如下所述:

Best way to secure a WCF service on the internet with few clients

我打算在此阶段使用用户名/密码身份验证(使用现有的成员基础结构),具有传输安全性(即SSL)。

我想知道当会员数据库显然是公司网络的内部时,推荐的处理身份验证请求的方法是什么。

我正在考虑的选项是:

  • 公共防火墙会进行SSL卸载,然后DMZ服务器将反向代理请求到内部WCF服务器 - 我假设凭据将被保留并通过此方法传递,并且内部服务可以适当地使用成员资格提供程序对用户进行身份验证。
  • 写一个愚蠢的WCF服务,以便在外部使用,这将使用自定义用户名/密码验证。这将调用网络内部的身份验证服务,并可访问成员资格详细信息。验证凭据后,呼叫将基本上传递给实现所需功能的内部服务。

这两种选择都可以吗?他们中的任何一个都有任何重大的利弊吗? (显然反向代理的代码少得多......)

1 个答案:

答案 0 :(得分:0)

我决定使用第二个选项。我已经有了防火墙内部的会员服务,因此我将创建服务以放置在DMZ中并实现自定义UsernamePasswordValidator并使用它来调用会员服务以验证凭据(然后我可以在轨道上实现自定义ServiceAuthorizationManager以检查角色/权限)。

假设凭据正确验证,服务将调用防火墙内部的主服务来执行该功能。