
我有一個內部系統,其中包含帶有使用者名稱和密碼的登入表單。
但最近我需要獲取有關嘗試登入的用戶的更多資訊(例如,在登入嘗試失敗的情況下)。
由於它是一個內部系統,所以我想使用Windows身份驗證來取得嘗試登入的AD用戶。但是,$_SERVER['AUTH_USER']
即使啟用了 Windows 驗證,仍傳回空字串。只有當我停用匿名驗證時,它才開始顯示使用者(因此似乎啟用兩者都無法取得 Windows 憑證)
我仍然希望用戶在登入表單中輸入憑證,但我也想知道目前正在嘗試登入的實際 Windows (AD) 使用者。
完全停用匿名身份驗證似乎有效,而且我不需要它,但我現在有點困惑,儘管我認為我明白:由於所有用戶都已經在 Windows 電腦上工作,因此他們的憑證都會被傳遞,這就是為什麼Windows 身份驗證有效。但現在我想知道完全禁用匿名身份驗證是否可能會在某些情況下導致錯誤,而我不應該完全禁用它?或者也許有一種方法可以同時啟用匿名身份驗證和 Windows 身份驗證並仍然獲取值$_SERVER['AUTH_USER']
(而不是空字串)?
而且,IIS 如何驗證連接到網站的 Windows 使用者?因為如果我只是與我的用戶一起查看網站,我不會輸入任何密碼或憑證
對我來說很奇怪的是,我使用 Windows 驗證,但我保留了登入表單,這似乎與 Windows 驗證的目的相矛盾。或者這是不正確的,現在我基本上有兩層身份驗證?我只是不知道 Windows 身份驗證如何工作,如果我的程式碼中沒有任何內容來處理它 - 我的意思是它如何「知道」用戶被允許查看該網站?