C# ASP.NET Core 2-切换active directory用户

C# ASP.NET Core 2-切换active directory用户,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,在我当前的项目(ASP.NET Core 2.2)中,身份验证由Active Directory处理。这意味着,如果用户“abc”登录到PC上,则在我的ASP.NET核心应用程序中,我有user.Identity.Name=“domain\abc”。对于不同的用户,菜单和表单看起来略有不同 测试过程中的新要求是:“如果您是‘xyz’用户,应用程序会是什么样子?”。这意味着,即使您以用户“abc”的身份登录,应用程序的行为也应与您是用户“xyz”的行为相同。我不知道如何处理这个问题,也完全不了解A

在我当前的项目(ASP.NET Core 2.2)中,身份验证由Active Directory处理。这意味着,如果用户“abc”登录到PC上,则在我的ASP.NET核心应用程序中,我有user.Identity.Name=“domain\abc”。对于不同的用户,菜单和表单看起来略有不同

测试过程中的新要求是:“如果您是‘xyz’用户,应用程序会是什么样子?”。这意味着,即使您以用户“abc”的身份登录,应用程序的行为也应与您是用户“xyz”的行为相同。我不知道如何处理这个问题,也完全不了解ASP.NETCore2中的身份验证服务、中间件等


有人能告诉我一些关于此要求的代码示例和教程吗?

在不同的浏览器实例上使用“Run As”并以其他用户身份登录是否有效?问题是,NTLM/Kerberos不是由Asp.Net核心本身处理的,而是由Web服务器模块
HTTP.sys
处理的。使用的握手超出管道的范围。我能想到的唯一方法是实现一个中间件,该中间件插入管道的最开始,并尽早替换标识。但在我看来,这是一项高风险的工作。这将是一个内置的安全漏洞。另一方面,如果有人能以某个人的名义采取这种行动,elese。。。好。。。这是我在evóEnterprise环境中绝不允许的。@ZorgoZ测试环境通常允许这样做。不是prod。有几种方法可以做到这一点。您可以创建与要模拟的帐户具有相同权限的新测试帐户,而不是作为其他帐户登录。只要给他们同样的权限。或者,您可以将用户名存储在会话变量或类似的内容中,而不是从您使用的位置读取用户名——显然,这应该在测试环境之外禁用。