2013-10-24 106 views
0

我目前正致力於構建WCF Web服務,我被要求使用基於HTTPS的基本身份驗證並驗證用戶是否存在於授權的LDAP組中。基於HTTPS的WCF基本身份驗證使用LDAP

我在因特網中搜索到了,據說Active Directory身份驗證在IIS中不可用,我們應該使用我們自己的自定義基本身份驗證模塊或UserNamePasswordValidator。 Link I used for coding Custom Authentication Module 我已經在本地IIS中使用SSL託管了WCF,現在它正在https下運行。

問題是,如果我實現這一個,我需要手動添加授權標題看起來。在瀏覽器中打開服務時顯示的基本認證對話框中是否有其他方式可以獲取用戶名或密碼?

或 可否請您提供一些建議,說明我需要做些什麼來實施上述安全措施? 我很無奈,請求你的幫助!!!!。提前致謝。我也嘗試了UserNamePasswordValidator,但它在應用程序級別執行,我能夠查看wsdl文件(Web服務的元數據,甚至不提供證書),所以我沒有使用自定義基本身份驗證模塊。

使用自定義基本身份驗證模塊,它在svc在瀏覽器中打開之前要求提供憑據。所以我認爲這將是最好的套件。請提供您的寶貴建議。

回答

0

基本認證的工作原理是網絡服務器返回一個401.0狀態代碼和一個WWW-Authenticate響應頭,其值爲'Basic real =「xxx」',其中領域只是顯示給用戶的信息,以便他們瞭解什麼是要求認證。當瀏覽器收到這種類型的響應時,它會向用戶顯示一個對話框,詢問用戶名/密碼。然後瀏覽器重新提交最初請求的URL,但還包括一個'Authorization'頭,其值是一個base64編碼的字符串,其中包含用戶名和密碼。

IIS的自定義身份驗證模塊基本上必須處理此交互。對於每個進入的請求,都需要查看是否存在'授權'標頭,如果是,則提取用戶名/密碼,以任何喜歡的方式驗證它們,如果成功則設置Context.User。如果沒有'Authorization'標頭,或者用戶名/密碼無效,則模塊必須將響應碼設置爲401.0,並確保存在WWW-Authenticate標頭(如上所述)。

爲了使用該模塊,必須禁用IIS中的所有其他身份驗證模塊(儘管似乎有些情況下應該啓用匿名身份驗證模塊)。由於在IIS中緩存,如果不是所有的請求都傳遞給您的認證模塊,請不要感到驚訝。