java - 在 java 中使用 Ldap 获取组

标签 java ldap

如何使用 Active Directory 获取特定用户组? 我正在获取所有组,但我想获取用户所属的组

  public static String ldapUri = "ldap://pdc.example.com:389";
  public static String usersContainer = "cn=users,dc=example,dc=com";  
  public ArrayList<String> getUserGroups(String email, String password){
    ArrayList<String> list = new   ArrayList<String>();
       Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, ldapUri);
    env.put(Context.SECURITY_PRINCIPAL, email);
    env.put(Context.SECURITY_CREDENTIALS, password);
    try {
        DirContext ctx = new InitialDirContext(env);
        SearchControls ctls = new SearchControls();
        String[] attrIDs = { "cn" };
        ctls.setReturningAttributes(attrIDs);
        ctls.setSearchScope(SearchControls.ONELEVEL_SCOPE);

        NamingEnumeration answer = ctx.search(usersContainer, "     (objectclass=group)", ctls);
        while (answer.hasMore()) {
        SearchResult rslt = (SearchResult) answer.next();
        Attributes attrs = rslt.getAttributes();
        String groups = attrs.get("cn").toString();
        String [] groupname = groups.split(":");
        String userGroup = groupname[1];
        System.out.println(attrs.get("cn"));
        }
        ctx.close();
        } catch (NamingException e) {
        e.printStackTrace();
    }
    return list;
  }

最佳答案

我正在使用这个获取用户的所有组

String[] attrIDs = {"cn"};
ctls.setReturningAttributes(attrIDs);
String[] attributes = {"memberOf"};
ctls.setReturningAttributes(attributes);
NamingEnumeration<?> answer = ctx.search(usersContainer, "(&(objectclass=user)(sAMAccountName=userName))", ctls);

关于java - 在 java 中使用 Ldap 获取组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34491680/

相关文章:

java - 如何从传入的扫描器中读取数组元素的值?

java - 未生成 R.java 文件。如何解决?

java - 使用 JPA 避免日期重叠

用于 LDAP 身份验证的 ASP.NET MVC : How to setup web. 配置?

ssl - 如果必须使用 Active Directory 进行身份验证,是否应该将 LDAPS 证书导入每台客户端计算机?

java - 调整 JTable 的高度

使用关系数据库部署 Java Web 应用程序

java - 使用 Spring Security 实现 LDAP 身份验证时出现 Gradle 依赖错误

java - 使用 Spring Data LdapRepository 创建新用户失败,LDAP 错误代码为 32

AuthnProviderAlias ldap 可以与 Apache2.4.x 一起使用吗?