spring-ldap如何获取用户所在的域对象

playboyb 2008-11-24 03:57:45
在Activity Directory中实现用户密码过期功能时,发现AD中没有存储密码过期时间的设置。只有通过用户属性中的pwdLastSet和用户所在的域对象中的maxPwdAge来联合实现。pwdLastSet我能够得到,而maxPwdAge存在于域对象中,我如何获取该域对象呢?
...全文
485 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chiefleo_me 2010-12-05
  • 打赏
  • 举报
回复
请问乱码问题该怎样解决,谢谢
playboyb 2008-11-25
  • 打赏
  • 举报
回复
怎么没有人哦!!自己顶,在线等牛人帮忙解答
playboyb 2008-11-25
  • 打赏
  • 举报
回复
最终输出结果:
modifiedCount=470
msDS-Behavior-Version=0
whenCreated=20080725073851.0Z
objectCategory=CN=Domain-DNS,CN=Schema,CN=Configuration,DC=mcap,DC=com
pwdHistoryLength=24
msDs-masteredBy=CN=NTDS Settings,CN=XIT,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=mcap,DC=com
minPwdLength=7
serverState=1
objectGUID=;MzP ~O???M?'"?(有乱码)
msDS-AllUsersTrustQuota=1000
rIDManagerReference=CN=RID Manager$,CN=System,DC=mcap,DC=com
auditingPolicy=(有乱码)
instanceType=5
ms-DS-MachineAccountQuota=10
objectSid=(有乱码)
isCriticalSystemObject=TRUE
lockOutObservationWindow=-18000000000
objectClass=top
name=mcap
pwdProperties=1
systemFlags=-1946157056
minPwdAge=-864000000000
dc=mcap
fSMORoleOwner=CN=NTDS Settings,CN=XIT,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=mcap,DC=com
msDS-PerUserTrustTombstonesQuota=10
uASCompat=1
wellKnownObjects=B:32:6227F0AF1FC2410D8E3BB10615BB5B0F:CN=NTDS Quotas,DC=mcap,DC=com
subRefs=DC=ForestDnsZones,DC=mcap,DC=com
uSNChanged=13921
nTMixedDomain=1
forceLogoff=-9223372036854775808
nextRid=1003
gPLink=[LDAP://CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=mcap,DC=com;0]
modifiedCountAtLastProm=0
uSNCreated=4098
maxPwdAge=-37108517437440
lockoutDuration=-18000000000
creationTime=128614448865468750
whenChanged=20080725075151.0Z
masteredBy=CN=NTDS Settings,CN=XIT,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=mcap,DC=com
distinguishedName=DC=mcap,DC=com
msDS-PerUserTrustQuota=1
lockoutThreshold=0
playboyb 2008-11-25
  • 打赏
  • 举报
回复
哈哈,这个问题困扰了1天多,今天终于解决了。现在把代码贴出来,希望以后遇到这样的问题兄弟少死几个脑细胞哈!
import javax.naming.*;
import javax.naming.directory.*;
import java.util.Hashtable;

public class TestLAD {
public static void main(String args[])
{
Hashtable env=new Hashtable(11);

// String keystore = "C:\\Java\\jdk1.6.0_02\\jre\\lib\\security\\cacerts";
// System.setProperty("javax.net.ssl.trustStore",keystore);
// System.setProperty("javax.net.ssl.keyStorePassword","changeit");

env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.SECURITY_PRINCIPAL,"cn=Administrator,cn=users,dc=mcap,dc=com");//user
env.put(Context.SECURITY_CREDENTIALS,"Java1234");//password
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_PROTOCOL,"ssl");
env.put(Context.PROVIDER_URL,"ldap://192.168.0.197/dc=mcap,dc=com");


try
{
DirContext ctx = new InitialDirContext(env);
NamingEnumeration atributos = ctx.getAttributes ("") .getAll ( ) ;
while ( atributos.hasMore ( ) ) {
BasicAttribute atributo = ( BasicAttribute ) atributos.next ( ) ;
System.out.println(atributo.getID ( ) + "=" + ( String ) atributo.get ( ) );
}
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}

}
無名VF 2008-11-24
  • 打赏
  • 举报
回复
呵 不懂 帮顶 学习...
playboyb 2008-11-24
  • 打赏
  • 举报
回复
各位xdjm有没有知道相关知识的,请多多帮忙!!

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧