簡體   English   中英

WCF服務,Windows身份驗證

[英]WCF Service, Windows Authentication

我們編寫了一個部署在IIS上的WCF服務。 我們選擇了集成Windows身份驗證。 在這種情況下不能使用service服務,但是如果我們可以將WCF服務的IIS虛擬目錄的身份驗證方法設置為“匿名”,則錯誤將消失。 但是,對於我們的WCF服務,“匿名”是不可接受的。 我們必須使用集成Windows身份驗證來驗證客戶端。 有人知道如何解決此問題嗎?

提前致謝,

阿希什

您必須做一些事情:

  • 取消選中來自Virtual Fordder的匿名訪問,然后選中Integrated Windows安全性。
  • 創建以下綁定配置:

      <basicHttpBinding> <binding name="Binding1"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows" /> </security> </binding> </basicHttpBinding> 
  • 將以上配置應用於您的服務和mex:

      <endpoint address="" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IService"> </endpoint> <endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IMetadataExchange"> </endpoint> 
    • 創建一個客戶端並使用NetworkCredential傳遞您的憑據:

        ServiceReference.MyClient proxy = new ServiceReference.MyClient(); proxy.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("MACHINENAME\\\\USERACCOUNT", "passwrd"); proxy.YourServiceOperation(); 

還有其他方法可以分別設置用戶名和密碼,但在.Net 4.0中不起作用。 USERACCOUNT是您的WCF主機已加入的域帳戶或LDAP。 如果服務器未加入域,則通過運行“ lusrmgr.msc”在本地創建帳戶

您需要注意兩件事:

  1. 您的配置是否對齊:IIS,web.config(system.web和WCF)
  2. 您的客戶端是否隨請求發送Windows身份驗證信息

這可能是第二個給您帶來麻煩的問題。 IIS日志應包含正在進行呼叫的用戶。

暫無
暫無

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

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