Asp.net-Core

ASP.NET Core 中的 Windows 身份驗證:手動登錄與自動 Intranet 登錄和可用組

  • October 11, 2019

我有一個 ASP.NET Core 3.0 應用程序,它使用本地 Intranet Windows 身份驗證來辨識登錄使用者。使用標準的 Windows 身份驗證行為,我可以WindowsIdentity毫無問題地擷取使用者的身份。

但是,根據使用者使用自動 Intranet 瀏覽器登錄(即無密碼對話框)或使用瀏覽器密碼對話框顯式登錄的方式登錄到瀏覽器,我得到使用者組的不同結果

以下是回顯使用者資訊的 API 請求,包括過濾的組成員列表(不包括內置帳戶)。左邊是手動登錄,右邊是自動登錄。

對於顯式登錄,我正確地看到了使用者所屬的所有自定義組。但是,對於自動登錄,這些相同的組不會顯示:

手動登錄與自動登錄的組差異

我還仔細查看了伺服器上的 User 和 Identity 實例,它為使用者引用了完全相同的 SID,因此對於 Group Membership 返回不同的結果似乎很奇怪。

當我返回相同的帳戶時,為什麼組列表不同的任何想法?請注意,這些組是本地的,因此由於域訪問,它不應該是一個問題。

注意:我什至在 localhost 上進行本地測試,為了測試這一點,我在此處設置了 Windows 代理設置:

登錄配置

關閉複選框後,我被迫登錄。使用它們(無論如何在 Chromium 瀏覽器中)我必須在瀏覽器的登錄對話框中明確輸入我的憑據。

自被添加到這些組後,使用者是否已註銷其電腦?

列出的組保存在使用者的登錄令牌中。我認為可能發生的情況是自動登錄會發送使用者現有的登錄令牌(在他們登錄 Windows 時創建),因此它不會包含自上次登錄以來添加的任何組。

手動輸入使用者名和密碼執行新的登錄,從而在登錄時獲得所有組的全新令牌。所以新的組會出現在那裡。

引用自:https://stackoverflow.com/questions/58253238