[英]How to change LDAP password via JNDI
我试图通过JNDI更改用户的密码,但我收到以下错误。
javax.naming.directory.SchemaViolationException:[LDAP:错误代码65 - 条目uid = yiwei,ou = Administrator,o = SID,dc = QuizPortal不能修改,因为生成的条目违反了服务器模式:条目uid = yiwei ,ou = Administrator,o = SID,dc = QuizPortal违反Directory Server架构配置,因为它包含属性用户密码,该条目中定义的任何对象类都不允许这样做;
以下是我的代码。
public class ModifyAtt
{
public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
public static String MY_HOST = "ldap://KhooGP-Comp1:1389/dc=QuizPortal";
public static String MGR_DN = "cn=Directory Manager";
public static String MGR_PW = "password";
public static void main(String[] args)
{
//Identify service provider to use
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);
env.put(Context.PROVIDER_URL, MY_HOST);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, MGR_DN);
env.put(Context.SECURITY_CREDENTIALS, MGR_PW);
try
{
// Create the initial directory context
InitialDirContext initialContext = new InitialDirContext(env);
DirContext ctx = (DirContext)initialContext;
System.out.println("Context Sucessfully Initialized");
ModificationItem[] mods = new ModificationItem[1];
Attribute mod0 = new BasicAttribute("user password", "a");
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0);
ctx.modifyAttributes("uid=yiwei,ou=Administrator,o=SID", mods);
}
catch(Exception e)
{
System.err.println(e);
}
}
}
知道为什么?? 提前谢谢了..
凯文
啊..用户密码不应该有任何间距。
需要改变
Attribute mod0 = new BasicAttribute("user password", "a");
至
Attribute mod0 = new BasicAttribute("userpassword", "a");
属性应该是没有任何空格的单个单词。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.