2013-10-16 35 views
1

我们为几个客户提供WebAPI。它建立在SOAP服务上。.NET Soap Service:无需身份验证即可隐藏方法

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

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

+0

当你说“显示方法”时,你的意思是在帮助页面上显示它们吗? –

+0

另外,你的意思是WCF服务,还是传统的ASMX服务? –

回答

1

我不确定您可以选择性地暴露某些基于用户的方法。

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

1

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

1

如果有可操作的操作数量和不同的配置,那么最好的办法是在服务上使用不同的端点来暴露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(); 
} 

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

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

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