如何配置 Shiro 以使用 Active Directory 身份验证,但此外我想将用户名映射到自定义角色。我似乎找不到任何关于此的信息。任何人都可以给我任何指示吗?
2 回答
要进行 Active Directory 身份验证,请使用JndiLdapRealm
对于授权覆盖方法 queryForAuthorizationInfo
请注意,您可能会从 AD 中获取组,因此您必须提供自己的映射(组到角色)。
关于这个 shiro参考手册说:
当需要将角色名称转换为一组具体的权限实例时,Realm 可以在内部使用 RolePermissionResolver。
对于支持可能没有权限概念的遗留或不灵活的数据源,这是一个特别有用的功能。
例如,许多 LDAP 目录存储角色名称(或组名称)但不支持将角色名称关联到具体权限,因为它们没有“权限”概念。基于 Shiro 的应用程序可以使用存储在 LDAP 中的角色名称,但实现 RolePermissionResolver 将 LDAP 名称转换为一组显式权限,以执行首选的显式访问控制。权限关联将存储在另一个数据存储中,可能是本地数据库。
希望这会有所帮助
我正在做同样的事情,但我很确定你必须编写一个自定义 AuthenticationStrategy。我想针对 AD 进行身份验证,但使用 INI 来定义角色,但我无法让它表现得足够好,以至于不接受针对任何一个的身份验证(即使使用 FirstSuccessfulStrategy)。我没有深入研究它,所以也许四处飘荡的Shiro家伙之一可以纠正这个问题,但我今天遇到了这些问题。