簡體   English   中英

無法訪問Page的Windows或IIS用戶

[英]Get Windows or IIS User without access to Page

我有一個.Net程序集(遺憾的是我們被困在.Net 3.5中),可以使用它們:

  1. 在.Net應用程序(控制台應用程序,Windows窗體應用程序)中,在系統上本地運行,或

  2. 在使用Windows身份驗證的IIS Web應用程序中

......並且需要獲得“當前用戶”。

通常#1我會使用System.Security.Principal.WindowsIdentity.GetCurrent() ,但這對#2不起作用,因為它將是IIS應用程序運行的用戶帳戶(例如應用程序池) ); 對於#2,我在請求的處理程序中使用Page.User.Identity ,但在這種情況下,我無法訪問該頁面。

我想我可以有一個方法讓IIS應用程序將Page傳遞給程序集,而User屬性不是虛擬的,所以從理論上講,惡意應用程序無法嘗試向我提供錯誤的用戶身份,但它看起來很漂亮狡猾。 有沒有更好的辦法?

目標是通過Windows身份驗證(通過登錄[#1]或IIS使用Windows身份驗證[#2])識別用戶。 如果我完全錯了,我會全神貫注地知道如何做到這一點。 :-)

  • HttpContext.Current.User顯然只能在IIS環境中工作。
  • Thread.CurrentPrincipal將包含IIS中的實際身份驗證數據,但對於桌面應用程序將保持為空。 這樣做的好處是它可以使您免於添加對System.Web程序集的引用(在桌面應用程序中)。
  • System.Security.Principal.WindowsIdentity.GetCurrent()適用於桌面應用程序,但在IIS中它將返回Application-Pool用戶,而不是HTTP請求的經過身份驗證的用戶。

暫無
暫無

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

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