active-directory – User.IsInRole(“fake group”)导致“主域
我有一个MVC 3应用程序,使用
Windows身份验证和声明使用WIF 4.5.
通过AD组中的成员资格(当前)控制对应用程序的访问: <deny users="?" /> <allow roles="domainsomegroup" /> <deny users="*" /> 除AD组外,我们还需要添加自定义角色. (此应用程序正在从Forms转换为Windows身份验证) 为了支持这些自定义角色(直到它们在AD中管理),我们将它们添加为ClaimTypes.GroupSid声明给用户,以便使用[Authorize(“ADMIN”)]和User.IsInRole(“ADMIN”)的现有代码继续功能: Application_PostAuthenticateRequest(object sender,EventArgs e) { var identity = ClaimsPrincipal.Current.Identity as WindowsIdentity; var roles = userDAL.GetRoles(identity.Name); foreach(var role in roles) { identity.AddClaim(new Claim(ClaimTypes.GroupSid,role)); } } 这一切都按预期工作. 除非当前用户不是某个自定义角色(如ADMIN)的成员,并且该角色在AD中也不存在 我们在Controller Action Methods上使用[Authorize(“ADMIN”)],以及根据场景使用User.IsInRole(“ADMIN”)的各种实例.在那些发生错误并且应用程序爆炸的情况下. AD基础架构正处于升级/迁移过程中.我不知道那里的所有细节,但我知道有一些域,据说它们之间有信任,基础设施人员已经提到这些信任关系正在运行. 所以我想我想知道两件事: >这似乎不是我们的代码应该处理的东西.那么域名真的可能出现什么问题?我可以找出信任关系失败的“可信”域名吗?
请转到inetmgr,站点,默认网站,站点名称,iis组,双击身份验证,禁用匿名身份验证,然后重置应用程序池.
当Windows无法解密web.config文件中“authorization,allow roles”标记下定义的角色时,就会发生这种情况.用于测试注释掉web.config文件中的自定义角色标记.混合表单身份验证和Windows身份验证时,似乎会出现此问题.魔术发生在Global.asax文件Application_PostAuthenticateRequest方法中,当使用Forms身份验证时,您可以将User.Identity强制转换为FormsIdentity,然后从FormsIdentity Ticket创建自定义身份,然后从自定义身份创建自定义原则,然后您将能够将CustomPrincipal附加到当前用户和当前主体,即. Dim fIdent As FormsIdentity = CType(User.Identity,FormsIdentity) Dim ci As New CustomIdentity(fIdent.Ticket) Dim cp As New CustomPrincipal(ci) HttpContext.Current.User = cp : Thread.CurrentPrincipal = cp 对于IIS,您希望启用Forms身份验证和匿名身份验证,其他所有内容都应禁用.使用Windows身份验证时,Global.asax文件Application_PostAuthenticateRequest方法可以直接从User.Identity创建自定义原则,即. Dim cp As New CustomPrincipal(User.Identity) HttpContext.Current.User = cp : Thread.CurrentPrincipal = cp 在这种情况下,IIS设置应该是Windows身份验证,并且启用ASP.Net模拟并禁用其他所有内容. 将这些身份验证方法混淆会导致“主域和受信任域之间的信任关系失败”错误,因为如果您的Application_PostAuthenticateRequest方法由于某种原因未实现CustomPrinciple,那么Windows将尝试使用内置的IsInRole函数来检查对域角色的角色,而不是使用您的CustomPrinciple代码隐藏文件后面的自定义IsInRole. 这是一篇有用的文章和链接: http://www.codeproject.com/Articles/8819/Authorize-and-authenticate-users-with-AD (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – 如何利用备用工作站驱动器空间进行服务器存储/备
- 在Windows 7中对自己的exe目录中的c#app进行写访问
- filesystems – 媒体服务器的最佳文件系统?
- Microsoft Edge浏览器不支持收藏夹中的javascript bookmark
- 什么是最简单的方法来制作Windows的热键?
- 使用Windows和MinGW在Eclipse中编写的C程序无法显示输出到控
- 我应该考虑在Windows上保护SVN?
- MSBuild由于错误APPX0002失败:任务’GenerateAppxPackageR
- windows-server-2012 – Windows Server 2012 Branchcache与
- windows-7 – 如何查看软件RAID 1重新同步的状态?