【问题标题】:.NET Soap Service: Hide Methods without Authentication.NET Soap 服务:隐藏没有身份验证的方法
【发布时间】:2013-10-16 20:09:49
【问题描述】:

我们为多个客户提供了一个 WebAPI。它建立在 SOAP 服务之上。

我们出售这个 API 的几个部分,以便每个客户都可以决定他想要什么和需要什么。

问题是:是否可以只显示认证用户的方法,分别只显示他支付的方法?

【问题讨论】:

  • 当您说“显示方法”时,您的意思是在帮助页面上显示它们吗?
  • 另外,您是指 WCF 服务,还是旧版 ASMX 服务?

标签: c# .net web-services soap


【解决方案1】:

我不确定您是否可以根据用户有选择地公开某些方法。

另一种方法可能是将安全密钥作为参数添加到每个方法中,这对于您的已验证用户来说是唯一的。您可以使用此密钥来确定他们是否已通过身份验证或是否已付费使用该方法。

【讨论】:

    【解决方案2】:

    只是一个想法。我会在 Web 服务端禁用自动生成的 WSDL。然后,我将生成带有适合各个客户的联系人的 WSDL,并通过共享它向客户提供这个手动生成的 WSDL,例如,通过网络或通过电子邮件发送,或者......客户可以生成他们的代理基于他们拥有的 wsdl 和其他方法对他们来说是不可见的。

    【讨论】:

      【解决方案3】:

      如果有可管理的操作数量和不同的配置,那么好的方法是在服务上使用不同的端点来公开ServiceOperations。然后,用户可以选择(购买)不同端点之一,获得对不同操作的访问权限。

      例如

      // the implementation
      public class OurService : PackageA, PackageB
      {        
          public void OperationA() //
          public int OperationB() //
          public string AnotherOperation() //
      }
      
      // the endpoints:
      public interface PackageA
      {
          void OperationA();
          string AnotherOperation();
      }
      
      public interface PackageB
      {
          void OperationB();
          string AnotherOperation();
      }
      

      您可以为每个客户创建一个界面,因为他们选择了他们想要的操作。每个接口/端点都可以有自己的安全模型和地址。

      不太好的方法是提供更通用的服务。服务需要接受一个基本对象和一个指令来描述操作。该服务确定用户是谁,检查他们是否被允许使用该操作,然后中止或继续。

      在这种情况下,无法查看服务的运行方式,用户只能根据您提供的文档了解潜在的“操作”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-23
        • 1970-01-01
        • 1970-01-01
        • 2021-11-27
        • 2020-09-01
        • 1970-01-01
        • 2021-02-27
        • 2020-07-04
        相关资源
        最近更新 更多