C# 模拟用户

C# 模拟用户,c#,.net,active-directory,C#,.net,Active Directory,我试图模拟一个用户从我的网站进入一个需要广告凭据的网站。我知道用户id已经不是密码了。我想知道在代码中是否有一种方法可以连接到ad并仅使用用户id模拟用户 其全部目的是允许代理登录服务 据我所知,没有。AD中的安全设置(通常)是为了防止未经授权的访问,因此您必须 从用户处获取密码 创建一个“假”用户进行测试 暴力破解密码 当然,强制使用密码/帐户不是一个很好的方法,除非它是你自己的网络,对你自己没有法律后果 理想情况下,我建议创建一个假用户进行测试 希望有帮助 以-5票回答一个问题,我有点紧

我试图模拟一个用户从我的网站进入一个需要广告凭据的网站。我知道用户id已经不是密码了。我想知道在代码中是否有一种方法可以连接到ad并仅使用用户id模拟用户


其全部目的是允许代理登录服务

据我所知,没有。AD中的安全设置(通常)是为了防止未经授权的访问,因此您必须

  • 从用户处获取密码
  • 创建一个“假”用户进行测试
  • 暴力破解密码
当然,强制使用密码/帐户不是一个很好的方法,除非它是你自己的网络,对你自己没有法律后果

理想情况下,我建议创建一个假用户进行测试


希望有帮助

以-5票回答一个问题,我有点紧张。我想指出,有这样一个特点。它叫。它也被称为

Microsoft发明了协议传输,因为Active Directory主要使用Kerberos进行身份验证。但是,在许多情况下,Kerberos端口在Internet环境中被阻止。所以,应用程序不能使用Kerberos进行身份验证。对于web应用程序尤其如此,通常只打开端口80。为了解决这个问题,Microsoft允许通过其他机制进行身份验证,例如,使用ASP.NET基于表单的身份验证。然后,代理服务器可以使用自己的机制为任何刚刚经过身份验证的用户获取Kerberos票证。在此过程中,不需要Active Directory密码。但是,请注意,Microsoft确实希望使用此方法获取Kerberos票证的应用程序能够对用户进行自己的身份验证。例如,您可能有一个SQL server数据库存储一组用户名和密码。应用程序使用存储在SQL Server数据库中的用户名和密码进行身份验证,然后获取指定用户的Kerberos票证

正如你们中的许多人指出的,如果真的发生这种情况,这看起来就像一个巨大的安全漏洞。这是精美的印刷品。为了使用协议传输方法获得Kerberos票证,您的进程必须具有作为操作系统一部分的权限。这是系统中非常高的权限。简单一点。如果您只是以普通AD用户帐户登录,并尝试使用协议传输方法运行程序以获取域管理员票证,则不会起作用,因为您没有作为操作系统一部分的权限。默认情况下,您的
NT Authority\LocalSystem
帐户将拥有此权限。因此,为了做到这一点,在许多情况下,您只需编写一个服务并将服务帐户设置为使用
NT Authority\LocalSystem
。该服务将能够从Active Directory获取您需要的任何Kerberos S4USelf票证

等一下。你们中的许多人会说这仍然是一个安全漏洞,因为我可能是某台特定工作站机器上的本地管理员。然后,我可以安装任何我喜欢的服务。我可以自己创建一个服务,并使用S4USelf获取域管理员票证并访问企业环境中的一些重要信息。好事实并非如此。Microsoft使S4USelf Kerberos票证非常特殊,因此它只能在请求票证的计算机上使用。换句话说,您不能使用网络上的S4USelf票证请求任何其他服务。这听起来更合理,对吗?访问权限仅限于该特定机器。是的,我知道仍然很难接受这样一个事实,即一个人可以在不知道密码的情况下模拟另一个用户帐户,但该功能仍然存在


沿着这条线,有另一个疯狂的东西叫做。它也被称为S4UProxy。它基本上将这种模拟功能扩展到网络资源。这意味着使用S4USelf票证,您可以获得S4UProxy票证。使用S4UProxy票证,您可以使用模拟身份访问选定的网络资源,而无需向Active Directory提供任何密码。同样,这看起来很疯狂,但这里是细节。首先,默认情况下,所有加入Active Directory的计算机都不能请求S4UProxy票证。域管理员必须打开计算机对象上的标志才能有意识地允许这种情况发生。域管理员应该很清楚,授予它基本上就像说我把这台机器当作域中的域控制器一样。它掌握着通往王国的钥匙。其次,并非所有的服务都可以通过S4UProxy方法获得。域管理员可以通过在计算机对象上指定SPN来选择允许哪些服务显式使用S4UProxy。这就是为什么它被命名为Constraint Delegation。这看起来很疯狂,但其实没那么糟糕。

这就像在问:“我知道这个电子邮件帐户的用户名,但不知道密码。我想允许代理登录服务在没有密码的情况下查看电子邮件。”允许模拟而不访问帐户密码将是一个巨大的安全漏洞。这是一个多么愚蠢的问题。提醒自己密码的用途,并思考这个问题是否真的值得问。是否要建立自己的登录联盟?尝试:Secret、qwertyuiop、(catnames)、出生日期、密码、drowssap、s3cr3t和aseasyas123。如果失败,就放弃。仅仅因为它是你的网站并不意味着你可以在你的系统上使用用户的凭据。如果谷歌登录到你的堆栈溢出帐户,你会同意吗?除了测试一个普通用户,在这种情况下,你自己做一个,这感觉非常不合适