[英]Get Windows or IIS User without access to Page
我有一個.Net程序集(遺憾的是我們被困在.Net 3.5中),可以使用它們:
在.Net應用程序(控制台應用程序,Windows窗體應用程序)中,在系統上本地運行,或
在使用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.