当前位置: 首页 > 知识库问答 >
问题:

使用LdapTemboard为Ldap posx帐户生成uidNumber

杜禄
2023-03-14

有人已经遇到了这个错误与Ldap中的posx帐户创建?

 javax.naming.directory.SchemaViolationException: [LDAP: error code 65 - object class 'posixAccount' requires attribute 'uidNumber']

是否有一种聪明的方法来生成唯一的UidNumber,将创建委托给Ldap,而不是仔细查找唯一性?(例如SQL Server中的标识列)

谢啦

我使用的代码如下:

public class LdapService {

//...
private LdapTemplate ldapTemplate;

public UserInfo save(final UserInfo user) {
    Name dn = buildDn(user);
    ldapTemplate.bind(dn, null, buildUserAttributes(user));

    // Update Groups
    for (String group : user.getGroups()) {
        try {
            DistinguishedName groupDn = new DistinguishedName();
            groupDn.add("ou", "groups");
            groupDn.add("cn", group);
            DirContextOperations context = ldapTemplate
                    .lookupContext(groupDn);
            context.addAttributeValue("memberUid", user.getUid());
            ldapTemplate.modifyAttributes(context);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return user;
}

private Attributes buildUserAttributes(final UserInfo user) {
    Attributes attrs = new BasicAttributes();
    BasicAttribute ocattr = new BasicAttribute("objectclass");
    ocattr.add("top");
    ocattr.add("inetOrgPerson");
    ocattr.add("posixAccount");
    attrs.put(ocattr);
    attrs.put("givenName", user.getName());
    attrs.put("sn", user.getSurname());
    if (user.getDisplayName() != null)
        attrs.put("cn", user.getDisplayName());
    attrs.put("userPassword", "{SHA}" + this.encrypt(user.getPassword()));
    attrs.put("mail", user.getEmail());

    return attrs;
}
//...
}

共有1个答案

双子民
2023-03-14

如果您的服务器支持修改增量请求控件,LDAP客户端可以使用它在一个原子操作中增加整数。另请参阅:LDAP:修改增量扩展。

 类似资料:
  • 我正在尝试使用Active Merchant和active_paypal_adaptive_paymentgem集成Paypal Adaptive结账。在用户注册期间,用户需要注册他/她的PayPal帐户才能在交易期间收到付款。 我已经为activemerchant设置了所有凭据。在paypal中注册用户帐户时,我遇到以下错误。 您正在登录此事务的API调用方的帐户。请更改您的登录信息,然后重试。

  • 我一直在寻找一种使用spring ldapTemplate通过LDAP验证用户名的方法。 我的搜索结果是 但我想知道我需要在contextMapper或attributeMapper中添加什么。据我所知,它用于将数据映射到对象。但我不需要这个东西。我只想知道布尔值是否存在。 我的属性示例: 我的模板包含url、用户名和密码,连接已经建立。 我需要一些帮助,因为我不确定使用搜索方法是否正确。 我已使

  • 我必须将一个遗留的身份验证系统移到Keycloak,并且我不能更改客户端上的实际工作流。因此,我需要用我的api(在node.js中)提供一个用户创建和登录系统,该系统反过来代表用户从Keycloak创建和获取访问令牌。 我能够创建一个用户,但我无法找到为该用户生成访问令牌的方法。我找到的唯一解决办法是创建一个用户并设置一个随机密码,然后要求授予提供用户名和密码的用户,但这意味着我必须在自己的一侧

  • 是否可以使用java代码创建/删除windows用户帐户并设置其权限以使其成为管理员帐户、简单用户帐户或来宾帐户?

  • 这是帐户链接代码。匿名用户已登录。

  • 我正在制作一个ASP.NET核心应用程序并使用用户机密。用户机密设置正确,当我右键单击项目->管理用户机密时,我可以看到它们。当我点击“debug”时,在Visual Studio中的一切都运行良好。但是当我构建应用程序并启动.dll文件时,它没有正确地检索用户机密,而是从中得到一个空字符串。