gpt4 book ai didi

wcf - 限制对内部 WCF 服务的访问

转载 作者:行者123 更新时间:2023-12-05 00:05:00 25 4
gpt4 key购买 nike

我们在 IIS 上的 asp.net 应用程序中托管了几个 WCF 服务。我们越来越多的服务用于内部通信(在我们自己的系统之间,客户端可以位于同一服务器或其他服务器上)。现在我们需要通过某种方式保护这些服务。

简而言之:目的是阻止其他人调用我们的服务。只有我们控制下的应用程序才能与这些服务通信

我们目前的想法:我们已经启用了 SSL,并且我们有服务器的公共(public)证书。我们目前的计划是通过使用以下方式启用安全性:clientCredentialType="UserName",其中我们有一个自定义验证器,它只检查我们定义的用户名/密码(很像 API key )。

问题 #1:有没有更好的方法?这个场景听起来很简单,我觉得我们缺少一些明显的解决方案。

问题 #2:如果我们这样做,我们已经拥有的 SSL 证书是否足够,还是我们必须创建任何其他证书?

某些上下文:.net 4,IIS 7,我们可以访问服务器。客户端/服务可能位于不同的服务器上。

更新 1: 客户端可能位于完全不同的网络上。我们在其他地方托管了一些其他系统,它们也需要能够调用这些服务。

最佳答案

据我了解您的情况,您的所有服务器/服务都在您的网络/Windows 域中,不是吗?在这种情况下,我不会使用 UserName 身份验证。坚持使用 Windows 安全和 HTTPS。

要限制对您的服务的访问,您有多种选择,所有这些都基于用于运行您允许的内部服务的客户端的 Windows 帐户。将这些客户帐户分配给域组,之后您可以:

  • 用户标准 .NET 基于角色的安全性 PrincipalPermissionPrincipalPermissionAttribute。这样做的缺点是您必须对服务进行硬编码授权。只有定义的 Windows 组中的用户才能访问该服务
  • 前一种方法有望(未经 WCF 测试,但在 ASP.NET 中运行良好)与 ASP.NET 角色提供程序一起使用。在这种情况下,您可以在权限中使用自定义非 Windows 角色,并使用 AutorizationStoreRoleProvider (AzMan) 将域用户或域组映射到您的自定义角色。它再次要求至少对自定义角色的权限进行硬编码。
    How to use Authorization manager with ASP.NET 2.0
    How to use ASP.NET Role provider in WCF
  • 创建自定义 ServiceAuthorizationManager,您将在其中使用 windows 角色声明来授权用户。这种方法的优点是您可以通过配置添加授权管理器,因此您不必接触服务的任何代码。
    How to create custom AuthorizationManager for WCF service

关于wcf - 限制对内部 WCF 服务的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6354656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com