簡體   English   中英

在 C# Windows 窗體中通過 IE 瀏覽器傳遞 AD 身份驗證憑據

[英]Passing AD authentication credentials via IE browser in C# Windows Form

我們有一個承載 IE 瀏覽器控件的 Windows 窗體應用程序。 我們的用戶運行該應用程序並打開指向存儲在 MOSS 中的文檔的鏈接。 我們正在嘗試設置應用程序以傳遞服務帳戶的憑據,以便我們可以避免讓所有用戶訪問 MOSS 站點。 我們使用了此處找到的代碼,如果用戶當前未登錄到我們的域,它似乎可以正常工作。 但是,該應用程序似乎不會為已通過域身份驗證的任何用戶傳遞服務帳戶身份驗證。 在這種情況下,它似乎只是使用經過身份驗證的用戶憑據。

我們怎樣才能做到這一點?

您指向的網站在哪個 Internet 區域下運行? 即使您使用自己的瀏覽器控件,它仍然會在某個區域中。 通過使用普通瀏覽器訪問相關站點來確定它是哪個區域,並確定它在哪個區域。
替代文字 http://img219.imageshack.us/img219/7162/internetzonenp8.jpg

如果該特定區域具有自動登錄功能,它將使用您登錄的憑據。 但是,如果您沒有以有效的域用戶身份登錄,則不會接受這些本地 Windows 憑據,並且似乎依賴於您的代碼提供的憑據。 替代文字 http://img230.imageshack.us/img230/407/settingskm3.jpg

如果安全性不是一個大問題,也許可以在應用程序池下運行現有網頁,在服務帳戶憑據下運行。 請記住將服務帳戶添加到工作進程組,並關閉集成身份驗證功能。

我從過去的經驗中了解到,通過將全局組添加到本地組,並可能在服務器上授予該本地組權限,這通常更健壯,並且可維護。 但現實世界有時是混亂的,這當然並不總是實用或最佳解決方案。

我希望這能回答您的一些問題,但我認為它不會回答所有問題。 如果您有任何需要了解更多信息的特定領域,如果我能回答,我將很樂意提供幫助。

最好的問候 Rihan

冒充在這里沒有幫助嗎? 您可以在您所談論的服務帳戶用戶的幌子下運行那段代碼(表單),然后瀏覽器控件應該在相同的上下文中運行。

以下鏈接可能會有所幫助;

http://msdn.microsoft.com/en-us/library/b80a7e92.aspx

http://www.buro9.com/blog/2006/10/06/impersonating-a-user-in-c/

我的理解是,您的應用程序中的 IE 控件將根據 Windows 會話中的憑據自動登錄到 MOSS 站點。 您寧願它始終使用您指定的帳戶並編碼到應用程序中嗎?

IE 使用一種 Kerberos 身份驗證(Windows 集成身份驗證)自動登錄到域站點

三項建議;

  • 不要使用 MOSS 站點的 WINS 名稱,而是使用 IP 地址(也可以使用 DNS 名稱,例如不是http://moss-server而是http://moss-server.domain.com )。 這應該會導致 IE 無法自動登錄到該站點。
  • 將 Web 服務器上的身份驗證模型更改為僅使用 Basic(安全警告 - 明文密碼交換)
  • 在 Web 瀏覽器中禁用“啟用集成 Windows 身份驗證”選項。 這將使訪問域中的任何站點變得痛苦......

我的建議是第一個。 使用不同的地址使 IE 認為它沒有訪問受信任的站點,因此不使用集成身份驗證。

所有這些都可以在應用程序之外使用 IE 進行測試。 簡單地啟動 IE 並輸入您正在使用的地址到 MOSS 站點。 如果系統要求您輸入密碼,那么您就有了解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM