经过大量的谷歌搜索和阅读有关如何在ASP.NET应用程序中管理混合模式身份验证的几个解决方案,我仍然没有适合我的问题的解决方案.
我必须为一堆不同的用户组实现一个Intranet应用程序.到目前为止,我已经使用了很容易实现的windows authentication.在授权用户组获取特殊应用程序功能时,我的问题就出现了.
使用[Authorize(Users = "DOMAIN\\USER")]效果很好,但由于我无法访问活动目录管理,因此我无法按照我的应用程序的需要配置角色管理.
我想做的是定义自定义角色和成员资格以及在活动目录中定义的那些(这样的扩展是否可能?例如通过实现自己的成员提供者?).
你认为什么是我的问题的最佳解决方案.除了Windows身份验证之外,我是否真的必须使用表单身份验证实现复杂的混合模式身份验证?
二手技术:
编辑(感谢dougajmcdonald帮助的最终解决方案):
在指向我使用自定义IPrincipal实现后,我在这里和这里找到了一些解决方案.将所有内容放在一起我得出以下解决方案:
1.创建自定义主体实现:
public class MyPrincipal: WindowsPrincipal
{
List<string> _roles;
public MyPrincipal(WindowsIdentity identity) : base(identity) {
// fill roles with a sample string just to test if it works
_roles = new List<string>{"someTestRole"};
// TODO: Get roles for the identity out of a custom DB …Run Code Online (Sandbox Code Playgroud)