我们有几个客户的 WebAPI。它建立在 SOAP 服务之上。
我们出售这个 API 的几个部分,以便每个客户都可以决定他想要什么和需要什么。
问题是:是否可以只显示认证用户的方法,分别只显示他支付的方法?
我们有几个客户的 WebAPI。它建立在 SOAP 服务之上。
我们出售这个 API 的几个部分,以便每个客户都可以决定他想要什么和需要什么。
问题是:是否可以只显示认证用户的方法,分别只显示他支付的方法?
如果有可管理的操作数量和不同的配置,那么好的方法是在服务上使用不同的端点来公开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();
}
当每个客户选择他们想要的操作时,您可能会为他们创建一个界面。每个接口/端点都可以有自己的安全模型和地址。
不太好的方法是提供更通用的服务。该服务需要接受一个基本对象和一个指令来描述操作。该服务确定用户是谁,检查他们是否被允许使用该操作,然后中止或继续。
在这种情况下,无法看到服务的运行方式,用户只能根据您提供的文档了解潜在的“操作”。
我不确定您是否可以根据用户有选择地公开某些方法。
一种不同的方法可能是将安全密钥作为参数添加到每个方法中,这些方法对于您的已验证用户来说是唯一的。您可以使用此密钥来确定他们是否已通过身份验证或已付费以使用该方法。
只是一个想法。我会在 Web 服务端禁用自动生成的 WSDL。然后,我将生成带有适合各个客户的联系人的 WSDL,并通过共享它向客户提供这个手动生成的 WSDL,例如,通过网络或通过电子邮件发送或...客户可以生成他们的代理基于他们拥有的 wsdl 和其他方法对他们来说是不可见的。