.NET肥皂服务:隐藏无需身份验证的方法

时间:2013-10-16 20:09:49

标签: c# .net web-services soap

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

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

问题是:是否可以仅为经过身份验证的用户显示方法,分别只显示他已支付的方法?

3 个答案:

答案 0 :(得分:1)

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

另一种方法可能是将安全密钥作为参数添加到对经过身份验证的用户而言唯一的方法中。您可以使用此密钥来确定它们是否经过身份验证或已付款,以使用该方法。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

e.g。

// 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();
}

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

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

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