2013-10-16 65 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(); 
} 

當您選擇他們想要的操作時,您可能爲每個客戶端創建接口。每個接口/端點都可以有自己的安全模型和地址。

不太好的方法是做出更通用的服務。該服務需要接受一個基本對象和一條說明操作的指令。該服務確定用戶是誰,檢查他們是否被允許使用該操作,並中止或繼續。

在這種情況下,服務運行方式不可見,用戶只會根據您提供的文檔瞭解潛在的「操作」。