- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在编写一个类来处理在 asp.net、WCF 服务和 WinForms 应用程序中使用的模拟和委托(delegate)。
根据 MSDN , WindowsIdentity.GetCurrent() 返回代表当前 Windows 用户的 WindowsIdentity 对象。
和
根据 MSDN , WindowsIdentity.Impersonate 允许代码模拟不同的 Windows 用户。
那么,模拟当前用户有什么影响,更重要的是,在 Web 应用程序中,WindowsIdentity.GetCurrent() 如何返回进程启动者身份或已经模拟的最终用户?
最佳答案
如果发生 Win32 错误,
Impersonate()
将抛出一个 SecurityException
。因此,它很可能是通过 Win32 函数实现的,很可能是 ImpersonateLoggedOnUser()。 .
它的文档说(强调我的):
All impersonate functions, including
ImpersonateLoggedOnUser
allow the requested impersonation if one of the following is true:
- The requested impersonation level of the token is less than
SecurityImpersonation
, such asSecurityIdentification
orSecurityAnonymous
.- The caller has the
SeImpersonatePrivilege
privilege.- A process (or another process in the caller's logon session) created the token using explicit credentials through
LogonUser
orLsaLogonUser
function.- The authenticated identity is same as the caller.
因此,我强烈倾向于认为 WindowsIdentity.GetCurrent().Impersonate()
将成功为同一用户建立一个新的模拟层。
关于你问题的第二部分,你似乎混淆了 WindowsIdentity.GetCurrent()
和 HttpContext.User .在 Web 应用程序中,WindowsIdentity.GetCurrent()
始终返回线程所有者(通常是 Network Service
),而 HttpContext.User
返回当前经过身份验证的用户,如果有的话。
关于c# - WindowsIdentity.GetCurrent().Impersonate() 做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8072624/
我正在尝试检查Powerhell脚本是否以管理员身份运行。 在网上搜索后,我得到了一些运行良好的示例代码。 为了获得WindowsPrincipal对象,我发现了以下两个示例代码。 第一: New-O
Asp.net 团队设计的脚本管理器使得每个页面只存在一个实例 (HttpHandler),我找不到他们扩展像 ScriptManager.GetCurrent 这样的方法的正当理由获取页面内的实例。
不知道为什么当我导航到 amazon.com 或 google.com 并点击浏览器图标进行浏览器操作时,我无法使用 getCurrent() 检索有关当前选项卡的信息。关于我遗漏了什么的任何提示?
这是我的代码: Display.getCurrent().asyncExec(new Runnable() { public void run() {
我有一个安装项目(在 Windows 7 上运行)在提交时启动自定义操作,启动刚刚安装的应用程序。在此应用程序启动期间,我有一个方法可以检查当前用户名以执行某些身份验证。当从此自定义操作启动时,我得到
var windows = chrome.windows.getCurrent( function(windows){ try{ // dont rea
在我的开发机器上,这行代码正确地返回了我的用户名。 public class Constants { public static readonly string Username = Wind
我正在编写一个类来处理在 asp.net、WCF 服务和 WinForms 应用程序中使用的模拟和委托(delegate)。 根据 MSDN , WindowsIdentity.GetCurrent(
ReSharper 警告我可能出现 NullReferenceException WindowsIdentity windowsIdentity = new WindowsIdentity(Windo
我想使用karibu-testing测试Vaadin流组件。在此组件中,我正在使用UI.getCurrent().access {}更新此组件,但是在运行测试时,不会执行access中的代码。当我尝试
我想知道 vaadin 框架中 Page.getCurrent() 需要导入什么,谷歌搜索引导我找到 com.vaadin.server 包,但是eclipse通知我import com.vaadin
应用程序基于 Stripes 和 Spring。每次我打电话FlashScope.getCurrent(..)方法返回 FlashScope 的新干净实例。不过如果我打电话FlashScope.get
我有一个用户,当我尝试使用以下任一方法枚举她的组时System.Security.Principal.WindowsIdentity.GetCurrent().Groups在用户的电脑上 或 Syst
我是 IL 的新手,但据我所知,MoveNext 应该在 Current 之前调用,假设我们有这样的 foreach 语句: foreach (var i in Enumerable.Empty())
我需要知道当前进程是否作为系统运行。在 C# 中,我使用 WindowsIdentity.GetCurrent().IsSystem 来执行此操作,C++ 中的等效项是什么? 我试图避免比较用户名,因
我正在尝试打开一个窗口或弹出窗口并向其传递一些值。我想使用参数进行 POST。 我目前正在使用 vaadin 7.7.6,com.vaadin.server.Page.getCurrent().ope
几个小时以来,我一直被困在一个看似非常愚蠢的问题上,无法继续前进。 基本上,如果我尝试在 ASP.NET Web 表单页面(即 Page_Load)的任何事件处理程序中评估以下内容: ScriptMa
本文整理了Java中com.opengamma.strata.pricer.ZeroRateSensitivity.getCurrency()方法的一些代码示例,展示了ZeroRateSensitiv
本文整理了Java中com.opengamma.strata.pricer.ZeroRatePeriodicDiscountFactors.getCurrency()方法的一些代码示例,展示了Zero
为什么UI.getCurrent vaadin 中的方法返回 null,但 getUI()实际上返回 UI在同样的情况下。例如: @Override public boolean ha
我是一名优秀的程序员,十分优秀!