具有自定义角色的 Shiro Active Directory

Posted

技术标签:

【中文标题】具有自定义角色的 Shiro Active Directory【英文标题】:Shiro Active Diectory with custom roles 【发布时间】:2012-11-21 16:48:01 【问题描述】:

如何配置 Shiro 以使用 Active Directory 身份验证,但此外我想将用户名映射到自定义角色。我似乎找不到任何关于此的信息。谁能给我指点?

【问题讨论】:

【参考方案1】:

要进行 Active Directory 身份验证,请使用 JndiLdapRealm

对于授权覆盖方法queryForAuthorizationInfo

请注意,您可能会从 AD 中获取组,因此您必须提供自己的映射(组到角色)。

关于这个shiroreference manual说:

当需要将角色名称转换为一组具体的权限实例时,Realm 可以在内部使用 RolePermissionResolver。

这是一个特别有用的功能,可用于支持可能没有权限概念的遗留或不灵活的数据源。

例如,许多 LDAP 目录存储角色名称(或组名称),但不支持将角色名称与具体权限关联,因为它们没有“权限”概念。基于 Shiro 的应用程序可以使用存储在 LDAP 中的角色名称,但实现 RolePermissionResolver 将 LDAP 名称转换为一组显式权限,以执行首选的显式访问控制。权限关联将存储在 另一个数据存储,可能是本地数据库。

希望这会有所帮助

【讨论】:

【参考方案2】:

我正在做同样的事情,但我很确定你必须编写一个自定义 AuthenticationStrategy。我想针对 AD 进行身份验证,但使用 INI 来定义角色,但我无法让它表现得足够好,以至于不接受针对任何一个的身份验证(即使使用 FirstSuccessfulStrategy)。我没有仔细研究它,所以也许四处飘荡的 Shiro 家伙之一可以纠正这个问题,但我今天遇到了这些问题。

【讨论】:

以上是关于具有自定义角色的 Shiro Active Directory的主要内容,如果未能解决你的问题,请参考以下文章

Apache Shiro - 自定义 jdbc 领域 - 读取角色/权限

我在骆驼下使用 apache shiro,我无法使用 ldap/active 目录将组映射到角色

Shiro安全框架学习02 - 自定义Realm

使用自定义注解和AOP管理shiro权限

shiro 怎么自动实现对路径权限的分配

shiro学习笔记_0600_自定义realm实现授权