最近給公司內部某個部門做了個ASP.NET網站,需要用到Windows認證,用戶訪問網站的時候,輸入的是AD裏面的用戶名和密碼進行驗證。原先IIS是這樣設置的:
所以每次用戶訪問,IIS都會彈出一個頁面讓用戶輸入用戶名和密碼:
但是用戶不喜歡上面這個頁面,且用戶需要把“記住我的密碼”這個選項給去掉,所以我就打算使用asp.net的Form認證方式,自己寫代碼來驗證
用戶輸入的用戶名和密碼是否正確。在網上搜了一下,微軟有一篇文章介紹了Windows認證的實現方式:
http://msdn.microsoft.com/zh-cn/library/ms180890(VS.90).aspx
我照着文章中的步驟創建了相關的類和頁面,在VS2008裏面運行,可以正常進行用戶驗證,
但是當我把網站代碼部署到IIS裏面的時候,驗證就通不過了,出現的錯誤頁面如下:
查了好久,才發現自己在創建IIS的虛擬目錄的時候漏了這兩個步驟:
-
使應用程序的匿名帳戶成爲對 Active Directory 域服務具有權限的帳戶。
-
如果啓用了“允許 IIS 控制密碼”複選框,則清除該複選框。默認的 IUSR_<computername> 帳戶對 Active Directory 域服務不具有權限。
所以,IIS的匿名用戶沒有權限到AD裏面去進行驗證;然後我打開虛擬目錄的屬性頁,進行如下設置:
然後就可以看到部署在IIS裏面的網站能正常的進行windows用戶驗證了: