我有以下场景,我正在计划使用Windows身份验证。关于Windows模拟的建议,但更改为其他用户
1.1)我有一个web服务器,它将在域中运行。
1.2)该网站将在具有一组配置的权限(允许访问文件系统,SQL服务器数据库等)的域用户的凭据下运行。
1.3)访问该网站的用户将属于同一个域,所以我打算使用Windows身份验证。
所以在这一点上,一个经过身份验证的用户,将访问该网站,但我想从代码中,“CurrentUser”将是该网站正在运行的网站。
我想要以下内容。
2.1)使用Windows身份验证来验证访问该站点的用户。 (域控制器将负责这个)。
2.2)让站点在步骤1.2中配置的用户下运行。所以它将拥有它的所有权限。
2.3)但我想知道初始用户用来验证(步骤2.1)。
这样我可以做到以下几点:
3.1)用户“A”决定访问该网站,因为他是属于同一个域作为Web服务器,他成功地验证。
3.2)从代码中我发现“A”已通过验证,所以我会去取他的角色。 “角色1,角色2,角色3”。
3.3)然后,我希望代码在步骤1.2中配置的用户下运行,但是我将为委托人分配从3.2检索到的所有角色。
我以为也许我可以使用模拟为此。
4.1)所以用户“A”决定访问该网站并进行身份验证。
4.2)该网站最初将以“A”凭证运行,因此“CurrentUser”将为“A”。
4.3)将用户(以某种方式)切换回1.2
4.4)我可以检索4.1配置的所有角色。
4.5)为当前主体分配从4.4中检索到的角色。
因此,最终网站将使用Windows身份验证与模拟,但从代码我会切换回用户1.2。
如果你已经达到了这一点,谢谢阅读!我想知道这是否可行,是否可以实现,或者我是否过于复杂。
此外我还建议如何插入以及在何处执行所有角色检索和用户切换。
非常感谢!
更新1
@代码Jammr,你是对的,没有必要做任何疯狂的事情。但我认为我仍然需要看看HttpModules,..
经过一些测试,搜索等...
我已经开始了解这些IIdentity的对象之间的差异:
HttpContext.Current.User.Identity
Thread.CurrentPrincipal.Identity
的WindowsIdentity I2 = WindowsIdentity.GetCurrent();
我张贴另一个问题,帮助我理解他们: Help understanding impersonation
我觉得这回答我的问题。