如何從 ASP.NET 應用程序中獲取登錄的 Windows 域帳戶?
我們有一個 ASP.NET 應用程序來管理它自己的使用者、角色和權限數據庫,我們最近在使用者表中添加了一個欄位來保存 Windows 域帳戶。
我想讓使用者不必 親自登錄我們的應用程序,而是根據目前登錄的 Windows 域帳戶 DOMAIN\username 自動登錄。我們想根據我們自己的使用者表對 Windows 域帳戶進行身份驗證。
這是在 Windows 窗體中做的小菜一碟,是否可以在 Web 窗體中做到這一點?
我不希望使用者收到 Windows 挑戰螢幕提示,我希望我們的系統處理登錄。
澄清:我們正在使用我們自己的自定義 Principal 對象。
澄清:不確定它是否有所作為,但我們使用的是 IIS7。
幾年前我做了你想做的事情。我試圖為它找到一些程式碼,儘管它是在以前的工作中,所以程式碼就在家裡。
我記得雖然我用這篇文章作為我的起點。您設置了 LDAP 提供程序,以便您可以實際執行使用者與 LDAP 的檢查。如果您嘗試使用 LDAP 方法,請確定一件事。在設置 LDAP 的設置文件中,確保 LDAP 全部大寫,否則將無法解析。
這種集成是在伺服器級別,是 IIS 決定使用者未登錄;並且是 IIS 將身份驗證提示發送回使用者,瀏覽器對此做出反應。
由於您想使用域登錄,因此只有一種方法可以做到這一點;集成 Windows 身份驗證。這只有在 IIS 伺服器也是域的一部分並且使用者直接訪問機器而不是通過代理,並且從也是域的一部分的機器(使用者適當登錄)時才有效。
但是,您的自定義主體對象可能會創造樂趣和遊戲;這種類型的身份驗證將是一個 WindowsPrincipal 和一個 WindowsIdentity;您可以通過 User 對象訪問它(請參閱如何:在 ASP.NET 2.0 中使用 Windows 身份驗證)
我假設您因為您的自定義角色而想要一個自定義主體?我懷疑你能否讓這兩個發揮得很好。您可以創建一個自定義角色提供程序來查看您的數據儲存,或者查看您可以查看ADAM,它是 AD 的擴展,它在每個程序的基礎上提供角色並帶有很好的管理工具。