我的问题实际上是这个问题:Shiro JndiLdapRealm authorization against LDAP
总结一下,Shiro documentation州:
如果您希望基于LDAP模式执行授权,则必须将此模式子类化(JNDILdapRealm)并覆盖该方法(doGetAuthorizationInfo)以反映组织的数据模型。
我对已接受的解决方案感到困惑,因为searchBase未定义,并且它似乎是ActiveDirectoryRealm的一部分,而不是JndiLdapRealm。 getRoleNamesForGroups也是未定义的,但我认为在我的映射中,组名称将是角色名称。
我正在尝试获取映射ldap组的权限 - > Forumsys's Test Ldap Server的shiro角色,然后返回doGetAuthorizationInfo中的角色。我用来配置我的子类LdapRealm(扩展JndiLdapRealm,用于身份验证)的代码如下:
LdapRealm ldapRealm = new LdapRealm();
ldapRealm.setUserDnTemplate("uid={0},dc=example,dc=com");
JndiLdapContextFactory cf1 = new JndiLdapContextFactory();
cf1.setUrl("ldap://ldap.forumsys.com:389");
ldapRealm.setContextFactory(cf1);
有没有人有一个功能授权代码应该是什么样子的例子?或者对另一个问题的接受答案有一个简单的修改吗?
或者,有没有办法让Forumsys的测试服务器与ActiveDirectoryRealm一起使用(根据我的理解,实现授权)?
答案 0 :(得分:1)
因此,我认为这个问题的答案是:授权将取决于ldap服务器如何存储角色,以及您希望如何感知角色。 Jxplorer对于了解结构是什么非常有用。
至于使其适用于forumys,搜索库应该是“dc = example,dc = com”,而不是检查“memberOf”,它应该检查“ou”