簡體   English   中英

asmx web服務:客戶端身份驗證

[英]asmx web service: client authentication

我有一個Web服務,有一堆方法,我想有點安全。 這些數據實際上並非完全保密,但我仍然希望僅限訪問那些使用存儲在Web服務web.config文件中的特定用戶ID和密碼的人 AC #Windows服務客戶端將每天或每周調用一次此Web服務。

任何人都可以發布一個如何做到這一點的簡單例子嗎? 提前致謝。

這與我的問題非常相似: 我們應該如何實施以授權客戶使用我們的網絡服務?

我們最終沒有發布WSDL,只通過https提供服務並要求進行基本身份驗證 如果您不能強制所有客戶端使用https,請不要使用基本身份驗證。

如果這是一個.net Web服務,那么這里是配置文件條目,以防止wsdl被發布。

  <system.web>
    <webServices>
      <protocols>
        <remove name="Documentation" />
      </protocols>
    </webServices>
  </system.web>

當您轉到頁面時,您將收到一條錯誤消息,類似於您嘗試從站點手動下載web.config時所獲得的消息。 正如Steven所指出的那樣,這是通過默默無聞的安全性, 不應該單獨使用來保護您的Web服務。 但是,當除了基本的auth + https之外還使用它時,它還是一個不錯的額外功能。

客戶端代碼:

要從客戶端訪問此Web服務,請以正常方式和調用代碼添加Web引用(假設您的Web引用名為WebRef)。

WebRef.Url = "url";
WebRef.Credentials = new System.Net.NetworkCredential("userid", "password");

此外,您可能需要查看WebRef.PreAuthenticate以節省一些往返次數。 請注意,如果你是公司代理人,那么你將有一個有趣的時間進行測試。 通過WebRef by使用代理

WebRef.Proxy = new WebProxy("url");
WebRef.Proxy.Credentials = new System.Net.NetworkCredential("userid", "password");

臨時SOAP安全性有三種常規方法:

  1. 第一種是在每次調用時傳遞身份驗證信息。
  2. 第二種方法是將其傳遞一次以接收會話ID,然后在每次調用時傳入。
  3. 第三個與第二個基本相同,僅使用cookie。

在這三個中, 我推薦第一種方法,它不需要服務器維護狀態,但由於緩存可以同樣快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM