问题标签 [impersonation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
57415 浏览

c# - 来自 C# 的 Windows 模拟

作为 LocalSystem 运行的 C# 程序如何临时冒充另一个用户的登录身份?粗略地说,我有一个 Windows 服务,我想作为 LocalSystem 运行,但有时会模拟用户 XYZ(使用 Windows 集成安全性连接到数据库时)。

最重要的是:有没有办法在不知道其他用户密码的情况下做到这一点?

注意:如果密码是强制性的,是否有安全存储密码的推荐策略(c# 和/或 vbscript)。

0 投票
2 回答
1839 浏览

sql-server - 什么允许 Windows 身份验证用户名在两台服务器之间工作(流动)?

典型的 ISP 设置。一台服务器是 Web 服务器,另一台是 DB SQL 服务器。在两台机器上都创建了一个本地管理员帐户,比如说 XYZ。所以当我远程登录时,我要么是 WebServer\XYZ 要么是 DBServer\XYZ,这取决于我登录的位置。

现在,当我使用 Windows 身份验证登录到 DBServer 上的 SQL Server SSMS 并执行“S​​ELECT SUSER_NAME()”时,我得到了 DBServer\XYZ。这是有道理的,因为它表明了我使用这些凭据登录的事实。

现在,转到 WebServer。我以 WebServer\XYZ 身份远程登录。我已经在那里安装了 SQL 客户端组件。当我启动 SSMS,选择 DBServer,使用 Windows 身份验证登录并执行“S​​ELECT SUSER_NAME()”时,我以某种方式得到 DBSERVER\XYZ,而不是我认为应该是 WebServer\XYZ。

不知何故,来自 WebServer 的 XYZ 变成了来自 DBServer 的 XYZ。这是为什么?这是怎么发生的?当然,这不能只是因为名字碰巧是一样的吗?

我听说过受信任的域,但这两台机器都不是域控制器,所以我无权访问该信息。如果没有 GUI 工具,我如何判断它是否受信任?

我问这个问题的原因是因为,我试图在我的 XP 笔记本电脑上实现同样的东西(使用 Virtual PC),所以我可以模仿生产环境,但我没有任何运气。

0 投票
3 回答
364 浏览

c# - 为什么我只能在调试模式下访问这个 zip 文件?

我遇到了一个对我来说没有多大意义的问题。我有一个 ASP.NET 应用程序可以在调试模式下完美运行,但在正常运行时会引发访问被拒绝错误。我已经为 ASPNET 帐户和应用程序模拟对 webapp 正在调用的文件的完全控制权限的帐户(使用 Process 对象)。

我确定引发错误的文件位于 zip 文件中,并且我正在运行的进程不会在除 zip 文件之外的任何地方查找它们。但似乎在我解压缩 zip 文件之前,我无法对其内容设置权限。这对其他人有意义吗?有人知道解决方案吗?

0 投票
1 回答
185 浏览

c++ - 是否可以从远程计算机获取有效令牌?

是否可以在远程计算机上模拟 au/p?

理想情况下,我想使用从登录远程计算机获得的令牌来调用ImpersonateLoggedOnUser 。

我知道我可以使用 wnet 函数建立有效的连接,但只是不知道模拟。

0 投票
1 回答
2140 浏览

iis - Elevate impersonated credentials to app pool credentials in IIS

I am using impersonation in an application in IIS. I need to write a file to the file system, but don't want to use the impersonated user's credentials in this one case. I need to use the credentials of the app pool.

How do I temporarially elevate a worker process' credentials from impersonated credentials to the app pool's credentials?

0 投票
2 回答
1619 浏览

asp.net - ADSI/IIS 管理和 ASP.NET 模拟

我正在编写一个小型 Web 应用程序,它允许我管理我们网络上不同服务器上的多个 IIS 安装。我们没有域控制器。

我编写了一个使用 win32 api 及其 LogonUser 方法的小型模拟控制器。然后我使用 System.DirectoryServices 和 IIS ADSI 提供程序来创建一个新站点。

我有以下例程(用明文字符串交换了一些值以获得更好的可读性):

当我使用托管 Web 应用程序的服务器 (SRV6) 时,此例程有效。创建了一个新站点。

例如,如果我使用 SRV5,我们网络上的另一台服务器(没有域),ImpersonateValidUser 工作,DirectoryEntry 创建,但 w3svc.Invoke 失败并出现以下错误:

[COMException (0x80070005): 拒绝访问]

...

任何人都知道我该如何解决这个问题?

0 投票
2 回答
6464 浏览

c# - 连接到服务器上的 WCF 服务时出现问题

我已经在自己的工作组中的服务器上设置了 WCF 服务。我试图从位于公司域的客户端建立一个 TCP/IP 连接。当我尝试打开连接时,我收到一条 SecurityNegotiationException 消息:

“身份验证期间未满足远程端安全要求。请尝试提高 ProtectionLevel 和/或 ImpersonationLevel。” 内部异常显示:“网络登录失败”

在与一些同事讨论了这些问题并进行了一些谷歌研究后,我得出的结论是,问题在于客户端试图使用我的公司网络登录名和密码登录到服务器。由于服务器不是公司网络的一部分,它不知道我的公司身份,然后拒绝登录/连接尝试。这种分析是否正确,我不知道。

谷歌结果似乎表明,也许解决方案是我需要模拟服务器计算机上存在的用户帐户。--我还偶然发现了这篇演示用户模拟的代码项目文章。由于服务器上唯一的帐户是没有密码的管理员,我尝试将域作为计算机的 IP 地址为“10.0.0.11”,用户名为“管理员”,密码为“”。 http://www.codeproject.com/KB/dotnet/UserImpersonationInNET.aspx?display=Print 不幸的是,它失败并显示以下消息:

“登录失败:未知用户名或密码错误”

问题的另一个提示:当客户端和服务器都是公司网络上的机器时,根本不存在连接问题。

如何解决错误并完成与服务器的连接?尽管这不是最佳实践,但我完全可以移除任何安全措施,这样我就可以继续推进这个项目

0 投票
4 回答
1387 浏览

sharepoint - 将元素添加到特定用户的公告列表

我有一个客户要求根据另一个数据库中的一些数据创建一些公告。大部分看起来很容易,但新元素应该由输入数据中指定的用户(登录)创建。我计划使用列表 Web 服务添加公告,但我肯定想避免使用模拟来获得创建用户的权利。有没有办法在不使用模拟的情况下将正确的用户分配为创建者?

0 投票
1 回答
810 浏览

.net - 为非本地管理员 windows 用户使用模拟时,DLL 引用失败并显示“拒绝访问”

我们有一项使用 WCF 和模拟的服务。

用户可以使用属于 Active Directory 系统的凭据登录到客户端应用程序。

用户登录是模拟服务端。

当登录的用户在其主机上设置为本地管理员时,这可以正常工作。

但是当他们是非特权(标准)用户时会出现问题。我们收到一个异常,指出“访问被拒绝”“我们的 DLL 之一”。(它发生在我们所有的 DLL 上)

0 投票
1 回答
2324 浏览

sql - WCF 模拟和 SQL 可信连接?

我们有一个托管在 IIS7 下的服务。SQL 服务器的连接字符串设置为 Trusted。为了进行身份验证,我需要在服务上设置模拟并让客户端启动模拟连接。

有没有办法不设置模拟并且仍然允许服务通过受信任的连接登录到 SQL 服务器?我们希望避免让客户端登录服务。我们不确定他们将使用什么作为代理。我认为它更多的是与 SQL 服务器的服务级别协议,而不是客户端到 SQL 服务器的服务。

有什么想法吗?

谢谢