在 Active Directory 轻型目录服务中使用 java 创建用户
create user using java in Active Directory Lightweight Directory Services
有人在使用 Active Directory 轻型目录服务吗?我需要帮助。
我写了一段代码,但无法通过 java.
在 Active Directory 中创建用户
我所做的第一件事是,我通过 AD Edit window 在 AD LDS 服务器中手动创建了一个用户。
我可以通过下面的程序连接它。
Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, LDAP_URL);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "CN=testuser,OU=Gulf,DC=serviceProj");
env.put(Context.SECURITY_CREDENTIALS, "1234567");
env.put(Context.SECURITY_PROTOCOL, "ssl");
try {
DirContext ctx = new InitialDirContext(env);
}
我在 AD LDS 中手动创建了这个测试用户。
现在我想使用 java 创建用户,我写了下面的代码,但出现错误。
Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, LDAP_URL);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "CN=Admin,OU=Gulf,DC=serviceProj");//Admin- this is a admin user through which i login to this server machine on which ad LDA is installed, this same user was selected at time of creation of instance.
env.put(Context.SECURITY_CREDENTIALS, "1234567");
env.put(Context.SECURITY_PROTOCOL, "ssl");
try {
DirContext ctx = new InitialDirContext(env);
Attributes attrs = new BasicAttributes(true);
Attribute oc = new BasicAttribute("objectclass");
oc.add("top");
oc.add("person");
oc.add("organizationalPerson");
oc.add("user");
attrs.put(oc);
attrs.put(new BasicAttribute("cn", "testuser2"));
attrs.put(new BasicAttribute("name","test"));
ctx.createSubcontext("CN=testuser2,OU=Gulf,DC=serviceProj", attrs);
ctx.close();
}
我收到错误-
[9/18/18 14:16:31:193 GST] 0000024c SystemErr R javax.naming.AuthenticationException: [LDAP: error code 49 - 8009030C: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 2030, v2580
我在这一行遇到错误 DirContext ctx = new InitialDirContext(env);意味着我无法通过管理员用户连接。现在我需要帮助 user 我需要连接到那里创建用户?
//Admin- 这是一个管理员用户,我通过它登录到托管广告 LDA 的服务器计算机,在创建实例时选择了同一用户。
我的代码有什么问题。请帮我解决任何问题,示例代码,视频等
我能想到的这个错误有两个可能的原因:
- 您正在尝试使用
cn=testuser2
创建用户,但您在 DN 中输入 cn=admin
这是矛盾的
- 您的登录用户
testuser
在 OU=Gulf,DC=serviceProj
容器中没有创建权限
尝试使用
创建用户
ctx.createSubcontext("CN=testuser2,OU=Gulf,DC=serviceProj", attrs);
如果仍然失败,请使用管理用户登录(这是一个示例):
env.put(Context.SECURITY_PRINCIPAL, "CN=Administrator,OU=Gulf,DC=serviceProj");
编辑
因此使用InitialDirContext()
的绑定(登录)失败。您的 Admin
用户是否真的存在于该上下文中:
env.put(Context.SECURITY_PRINCIPAL, "CN=Admin,OU=Gulf,DC=serviceProj");
在您的屏幕截图中,我没有看到列出该用户,所以我认为它不存在。您只能使用 LDS 实例中实际存在的用户帐户(而非 AD 帐户)通过 LDAP 登录 AD LDS 。
如果您尝试使用正确的密码与 CN=testuser,OU=Gulf,DC=serviceProj
绑定,那么 InitialDirContext()
调用应该会成功。如果您将此帐户添加到 LDS 中的管理员角色,那么您也应该能够创建新用户。
在 Windows Server 2008+ 上的 AD LDS 实例 运行 上,本地或域密码策略限制生效,默认情况下禁用 AD LDS 用户帐户。
在启用用户帐户之前,您必须为其设置一个符合有效密码策略限制的密码。
-吉姆
有人在使用 Active Directory 轻型目录服务吗?我需要帮助。 我写了一段代码,但无法通过 java.
在 Active Directory 中创建用户我所做的第一件事是,我通过 AD Edit window 在 AD LDS 服务器中手动创建了一个用户。 我可以通过下面的程序连接它。
Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, LDAP_URL);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "CN=testuser,OU=Gulf,DC=serviceProj");
env.put(Context.SECURITY_CREDENTIALS, "1234567");
env.put(Context.SECURITY_PROTOCOL, "ssl");
try {
DirContext ctx = new InitialDirContext(env);
}
我在 AD LDS 中手动创建了这个测试用户。 现在我想使用 java 创建用户,我写了下面的代码,但出现错误。
Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, LDAP_URL);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "CN=Admin,OU=Gulf,DC=serviceProj");//Admin- this is a admin user through which i login to this server machine on which ad LDA is installed, this same user was selected at time of creation of instance.
env.put(Context.SECURITY_CREDENTIALS, "1234567");
env.put(Context.SECURITY_PROTOCOL, "ssl");
try {
DirContext ctx = new InitialDirContext(env);
Attributes attrs = new BasicAttributes(true);
Attribute oc = new BasicAttribute("objectclass");
oc.add("top");
oc.add("person");
oc.add("organizationalPerson");
oc.add("user");
attrs.put(oc);
attrs.put(new BasicAttribute("cn", "testuser2"));
attrs.put(new BasicAttribute("name","test"));
ctx.createSubcontext("CN=testuser2,OU=Gulf,DC=serviceProj", attrs);
ctx.close();
}
我收到错误-
[9/18/18 14:16:31:193 GST] 0000024c SystemErr R javax.naming.AuthenticationException: [LDAP: error code 49 - 8009030C: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 2030, v2580
我在这一行遇到错误 DirContext ctx = new InitialDirContext(env);意味着我无法通过管理员用户连接。现在我需要帮助 user 我需要连接到那里创建用户? //Admin- 这是一个管理员用户,我通过它登录到托管广告 LDA 的服务器计算机,在创建实例时选择了同一用户。
我的代码有什么问题。请帮我解决任何问题,示例代码,视频等
我能想到的这个错误有两个可能的原因:
- 您正在尝试使用
cn=testuser2
创建用户,但您在 DN 中输入cn=admin
这是矛盾的 - 您的登录用户
testuser
在OU=Gulf,DC=serviceProj
容器中没有创建权限
尝试使用
创建用户ctx.createSubcontext("CN=testuser2,OU=Gulf,DC=serviceProj", attrs);
如果仍然失败,请使用管理用户登录(这是一个示例):
env.put(Context.SECURITY_PRINCIPAL, "CN=Administrator,OU=Gulf,DC=serviceProj");
编辑
因此使用InitialDirContext()
的绑定(登录)失败。您的 Admin
用户是否真的存在于该上下文中:
env.put(Context.SECURITY_PRINCIPAL, "CN=Admin,OU=Gulf,DC=serviceProj");
在您的屏幕截图中,我没有看到列出该用户,所以我认为它不存在。您只能使用 LDS 实例中实际存在的用户帐户(而非 AD 帐户)通过 LDAP 登录 AD LDS 。
如果您尝试使用正确的密码与 CN=testuser,OU=Gulf,DC=serviceProj
绑定,那么 InitialDirContext()
调用应该会成功。如果您将此帐户添加到 LDS 中的管理员角色,那么您也应该能够创建新用户。
在 Windows Server 2008+ 上的 AD LDS 实例 运行 上,本地或域密码策略限制生效,默认情况下禁用 AD LDS 用户帐户。
在启用用户帐户之前,您必须为其设置一个符合有效密码策略限制的密码。
-吉姆