0

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

4

2 回答 2

1

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

对于授权覆盖方法 queryForAuthorizationInfo

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

关于这个 shiro参考手册说:

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

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

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

希望这会有所帮助

于 2013-01-03T14:28:29.810 回答
0

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

于 2012-12-20T23:16:54.773 回答