Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在DMZ中进行WCF用户名/密码身份验证的推荐方法是什么_C#_Wcf_Authentication_Ssl_Dmz - Fatal编程技术网

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

C# 在DMZ中进行WCF用户名/密码身份验证的推荐方法是什么,c#,wcf,authentication,ssl,dmz,C#,Wcf,Authentication,Ssl,Dmz,我希望托管一个WCF服务,该服务可通过internet访问有限的一组客户端,如下所述: 在此阶段,我打算使用现有的会员资格基础设施使用用户名/密码身份验证,并使用传输安全性,即SSL 我想知道当成员数据库显然位于公司网络内部时,处理身份验证请求的推荐方法是什么 我正在考虑的选择是: 公共防火墙将执行SSL卸载,然后DMZ服务器将反向代理请求到内部WCF服务器-我假设凭据将被保留并通过此方法传递,并且内部服务可以适当地使用成员资格提供商对用户进行身份验证。 编写一个哑WCF服务,它将使用自定义用户

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

在此阶段,我打算使用现有的会员资格基础设施使用用户名/密码身份验证,并使用传输安全性,即SSL

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

我正在考虑的选择是:

公共防火墙将执行SSL卸载,然后DMZ服务器将反向代理请求到内部WCF服务器-我假设凭据将被保留并通过此方法传递,并且内部服务可以适当地使用成员资格提供商对用户进行身份验证。 编写一个哑WCF服务,它将使用自定义用户名/密码身份验证。这将调用网络内部的身份验证服务,以访问成员详细信息。一旦验证了凭据,调用基本上将传递给实现所需功能的内部服务。
这两种选择都可能吗?这两种方法都有什么主要的优点/缺点吗?显然,反向代理的代码要少得多…

我决定使用第二个选项。我已经在防火墙内部有了一个成员资格服务,因此我将创建一个服务,使其位于DMZ中,并实现一个自定义UsernamePasswordValidator,并使用它调用成员资格服务来验证凭据,然后实现一个自定义ServiceAuthorizationManager来检查角色/权限


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

我在这里避免使用“最佳”这个词,因此,你会得到更多关于你衡量什么和如何衡量的评论,而不是实际答案。