Rom*_*nko 7 jboss ldap wildfly
我有使用wildfly建立的Kerberos加上我从LDAP获取组,它适用于某些配置,但不适用于其他配置.
Kerberos按预期工作,这是我对LDAP的配置:
<login-module code="org.jboss.security.negotiation.AdvancedLdapLoginModule" flag="requisite">
<module-option name="java.naming.provider.url" value="ldap://ttttt.com:3268/"/>
<module-option name="bindDN" value="user"/>
<module-option name="bindCredential" value="passwd"/>
<module-option name="baseCtxDN" value="DC=AD,DC=TTT,DC=com"/>
<module-option name="baseFilter" value="(userPrincipalName={0})"/>
<module-option name="rolesCtxDN" value="OU=Groups, DC=AD,DC=TTT,DC=com"/>
<module-option name="roleFilter" value="(member={1})"/>
<module-option name="roleAttributeID" value="memberOf"/>
<module-option name="roleAttributeIsDN" value="true"/>
<module-option name="roleNameAttributeID" value="cn"/>
<module-option name="recurseRoles" value="true"/>
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="allowEmptyPassword" value="false"/>
<module-option name="searchScope" value="SUBTREE_SCOPE"/>
</login-module>
Run Code Online (Sandbox Code Playgroud)
我已经设置了一个名为app_ttt_api的组.我在这个小组中添加了一些成员.
因此,当我添加的成员本身是一个组并且您是该组的成员时,我的设置有效.如果直接添加用户,则无效.此外,如果添加包含包含用户的组的组,它也不起作用.
所以,group->group->user工作但是
group->user
Run Code Online (Sandbox Code Playgroud)
和
group->group->group->user
Run Code Online (Sandbox Code Playgroud)
不
所以我试图弄清楚什么是错的,我应该修改什么,所以如果用户是任何递归组的一部分或直接是组的一部分,它应该工作.
编辑:后续问题 - 我可以在日志中看到LDAP实际返回的内容,即用户所属的用户组列表吗?还是LDAP流量?
Edit2:实际上已经找到了调试,它在这里描述 - https://developer.jboss.org/thread/272926
EDIT3:
我查看了AdvancedLdapLoginModule的源代码
从代码看起来如下:1.从用户初始角色上下文过滤中获取所有角色
526 results = searchContext.search(rolesCtxDN, roleFilter, filterArgs, roleSearchControls);
rolesCtxDN=DC=AD,DC=TTT,DC=com roleFilter=(member={1}) filterArgs[0]=myuser@AD.TTT.COM filterArgs[1]=CN=myuser,CN=Managed Service Accounts,DC=AD,DC=MLP,DC=com
Run Code Online (Sandbox Code Playgroud)
通过调用角色进行迭代
532 obtainRole(searchContext,resultDN);
在obtainRole它调用
572属性result = searchContext.getAttributes(dn,attrNames); 575属性roles = result.get(roleAttributeID);
其中attrNames是roleAttributeID - 在我的情况下是"memberOf".
完成从第575行获得的所有角色并致电
585 loadRoleByRoleNameAttributeID(searchContext,roleDN); 586 recurseRolesSearch(searchContext,baseRoleDN);
其中585添加角色,586递归搜索底层角色.
在我的案例中的问题3 - 为什么我们尝试获取角色我们的初始角色是memberOf而不是立即添加它,我们已经知道用户是这个角色的成员.我认为这就是为什么我只有在拥有group-> group-> user而不是在其他情况下获得授权的原因.
我理解发生了什么事吗?我应该在配置中传递其他内容吗?当我这样做时,我尝试了配置的不同变体
<module-option name="roleAttributeID" value="cn"/>
<module-option name="roleAttributeIsDN" value="false"/>
Run Code Online (Sandbox Code Playgroud)
它将加载所有第一级角色,但不会递归到较低级别的组.
在其他配置中,我尝试过没有加载任何角色.
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |