我們爲幾個客戶提供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服務? –