在wildfly中进行LDAP配置,搜索角色

时间:2017-10-31 17:32:14

标签: 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>

我已经设置了一个名为app_ttt_api的组。我在这个小组中添加了一些成员。

所以当我添加的成员本身就是一个群组而你是该群组的成员时,我的设置就有效。如果直接添加用户,则无法正常工作。此外,如果您添加包含包含用户的组的组,它也无法正常工作。

所以,group->group->user可以工作但

group->user

group->group->group->user

没有

所以我试图找出错误和我应该修改的内容,这样如果用户是任何递归组的一部分,或者直接作为组的一部分应该有效。

编辑:后续问题 - 我可以在日志中查看LDAP实际返回的内容,即用户所属的用户组列表吗?还是LDAP流量?

Edit2:实际上已经找到了调试,这里描述了它 - https://developer.jboss.org/thread/272926

Edit3:

我查看了AdvancedLdapLoginModule的源代码

此处: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
  1. 通过调用

    的角色进行迭代

    532 obtainRole(searchContext,resultDN);

  2. 在obtainRole中调用

    572属性result = searchContext.getAttributes(dn,attrNames); 575属性角色= result.get(roleAttributeID);

    其中attrNames是roleAttributeID - &#34; memberOf&#34;在我的情况下。

  3. 完成从第575行获得的所有角色并致电

    585 loadRoleByRoleNameAttributeID(searchContext,roleDN); 586 recurseRolesSearch(searchContext,baseRoleDN);

  4. 其中585添加角色,586递归搜索基础角色。

    我的案例中的问题在3 - 我们为什么要尝试获取角色我们的初始角色是memberOf而不是立即添加它,我们已经知道用户是这个角色的成员。我认为这就是为什么我只有在拥有group-&gt; group-&gt;用户时才获得授权而不是在其他情况下获得授权。

    我了解正在发生什么事吗?我应该在配置中传递其他内容吗?当我做

    时,我尝试了配置的不同变体
       <module-option name="roleAttributeID" value="cn"/>
       <module-option name="roleAttributeIsDN" value="false"/>
    

    它将加载所有第一级角色,但不会递归到较低级别的组。

    在其他配置中,我尝试过没有加载任何角色。

0 个答案:

没有答案