我正在尝试为 ASP.NET 应用程序实现“充当”功能,同时使用 Windows 身份验证和自定义角色提供程序。基本上我想做的是:
- 使用 Windows Auth 获取当前用户的域帐户以验证他们是已批准的域用户
- 使用自定义角色提供程序从 SQL Server 数据库获取权限信息。
- 实现功能以允许应用程序的管理员能够“充当”另一个用户,而无需他们以该用户的身份实际登录应用程序。
我试图实现的场景是应用程序管理员试图帮助用户解决问题并单击“充当”按钮以充当该用户并以他们看到的方式查看应用程序。因此,角色提供者需要了解当前用户正在充当其他人,并获取该用户而不是当前用户的权限信息。
我的计划是实现一个模拟功能,该功能将删除角色 cookie 并向会话变量添加一个值,指示用户当前正在模拟另一个用户。但是,由于在授权发生时未填充会话,因此这是不可能的。我不想使用 cookie,因为我不希望这会导致管理员机器上的潜在持久状态(这样管理员无法打开应用程序的另一个窗口并充当另一个用户或查看他们自己的数据)。
鉴于会话不可用,我找不到保存“充当用户...”信息的好方法(没有 cookie)。我想使用角色提供者等,以便我可以利用 .NET 中内置的安全修整。这一切可能根本不可能,但我希望有人以前尝试过这个,或者对我可以尝试实施的事情提出建议。
提前致谢!!