我们为几个客户提供WebAPI。它建立在SOAP服务上。.NET Soap Service:无需身份验证即可隐藏方法
我们出售该API的几个部分,以便每个客户都可以决定他想要什么以及他需要什么。
问题是:是否可以仅显示验证用户的方法,分别只显示他支付的方法?
我们为几个客户提供WebAPI。它建立在SOAP服务上。.NET Soap Service:无需身份验证即可隐藏方法
我们出售该API的几个部分,以便每个客户都可以决定他想要什么以及他需要什么。
问题是:是否可以仅显示验证用户的方法,分别只显示他支付的方法?
我不确定您可以选择性地暴露某些基于用户的方法。
一种不同的方法可能是将安全密钥作为参数添加到每个方法中,这些方法对于经过身份验证的用户是唯一的。您可以使用此密钥来确定他们是否已通过身份验证或已付款,以使用该方法。
只是一个想法。我会禁用Web服务端的自动生成的WSDL。然后,我将生成适用于各个客户端的联系人的WSDL,并通过共享它提供此手动生成的WSDL,例如通过Web或通过电子邮件发送或...客户端可以基于他们拥有的wsdl和其他方法对他们来说是不可见的。
如果有可操作的操作数量和不同的配置,那么最好的办法是在服务上使用不同的端点来暴露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();
}
当您选择他们想要的操作时,您可能为每个客户端创建接口。每个接口/端点都可以有自己的安全模型和地址。
不太好的方法是做出更通用的服务。该服务需要接受一个基本对象和一条说明操作的指令。该服务确定用户是谁,检查他们是否被允许使用该操作,并中止或继续。
在这种情况下,服务运行方式不可见,用户只会根据您提供的文档了解潜在的“操作”。
当你说“显示方法”时,你的意思是在帮助页面上显示它们吗? –
另外,你的意思是WCF服务,还是传统的ASMX服务? –