2

我正忙着设计一个 WCF 应用程序。该应用程序的目的是让保险会员通过网络访问他们的保险信息。

问题在于我们的网络架构,我不确定我必须使用哪种类型或组合的安全性。

在我们的内部网络中,我们有一个 UNIX 环境,我使用 EntireX .net 包装器访问它,我们有一个 Oracle 10g 数据存储,我通过企业库访问它。

我创建了一个包含业务对象的 BLL 和一个通过 Enterprise Library/EntireX 填充这些对象的 DAL。

我创建了一个带有 2 个 WCF 服务的 WCF 服务层,一个用于访问 oracle 存储,一个用于访问 unix,它们引用 BLL。

我将在防火墙内使用 SQL 2005 的生产服务器上的 IIS 中托管此服务。我们购买了一个我们正在为其创建 DMZ 的 Web 服务器,该 Web 服务器将仅通过端口 443 和/或端口 80 与生产服务器通信。我们公司的 Internet 将可以访问 DMZ 中的 Web 服务器。

表示层将是一个 ASP.Net 前端,它使用 Channelfactory 在代码中调用服务。我使用客户端必须向服务提供的 X509 客户端证书。该服务受 SSL 保护。前端将位于 DMZ 中的 Web 服务器上。

我正在使用带有传输安全性和 clientCredentialType="Certificate" 的 wsHttpBinding,它工作正常,但我想将登录信息传递给服务。我想把它添加到邮件标题中。

现在,我正处于怀疑我的设计可行性的阶段。有人可以给我一些关于在这种情况下我必须使用什么绑定和安全性、如何传递登录信息以及我必须在我的演示层中拥有什么才能最安全的提示。我们可以控制哪些端口将通过防火墙打开到内部生产服务器。我们将只有 1 个 ASP.Net 客户端托管在 DMZ 的 Web 服务器上,但只有 HTTPS 或 HTTP 访问生产服务器。

非常感谢瑞恩

谢谢

4

1 回答 1

1

我认为你的方法听起来不错。如果您的 WCF 服务将仅由您的前端 asp.net 应用程序使用,我可能会考虑在 Windows 服务中托管服务层并使用 TCP 绑定(那么您将不必处理 IIS 并且可能没有证书) . 但这可能需要您稍微更改基础架构要求(您仍然可以使用端口 80/443,但您将面临与使用 IIS 通常使用的端口相关的其他烦人问题)。您可以从 IIS/HTTP 绑定开始,然后在对整个应用程序的影响最小的情况下进行切换(这就是 WCF 的优点)。

关于服务本身,我还会考虑在您的两个存储库之上发布 1 个简单的外观。这样,您的客户就不会将自己与您的 oracle db 和 unix 系统的概念相结合。不过,这值得商榷,您只提到了所使用的技术,如果这两个系统代表不同的业务领域,那么将它们分开是有意义的。如果您只是因为它们是两个不同的系统而将它们拆分,那么我会尝试从 UI 中抽象出这些系统。

对于传递凭据,我建议将授权策略与声明结合使用。如果您还没有找到有关此主题的更多帮助,请查看 leastprivilege.com。这是一篇让您入门的文章

于 2009-04-17T07:16:00.960 回答