如何在Java中读取LDAP密码策略
我可以从LDAP读取用户密码策略吗,比如当它过期时,或者更多的细节,比如密码强度(最小长度等)?我需要这些信息,以便对数据库中的用户使用相同的策略。我的java应用程序要求数据库中的用户必须与域同步。是的,您可以使用JNDI。必须从用户上下文中读取pwdPolicySubentry操作属性的值。这将为您提供pwdPolicy对象的DN,然后将其作为带有属性的上下文进行查找,并获取以“pwd”开头的所有属性。但是,如果用户具有默认密码策略,则必须查看LDAP服务器配置以查找其DN。在OpenLDAP中,这在“overlay ppolicy”指令块的ppolicy\u默认行的slapd.conf中。它取决于底层LDAP服务器 例如,如果您使用的是Microsoft Active Directory,则用户条目将具有一个名为如何在Java中读取LDAP密码策略,java,passwords,ldap,Java,Passwords,Ldap,我可以从LDAP读取用户密码策略吗,比如当它过期时,或者更多的细节,比如密码强度(最小长度等)?我需要这些信息,以便对数据库中的用户使用相同的策略。我的java应用程序要求数据库中的用户必须与域同步。是的,您可以使用JNDI。必须从用户上下文中读取pwdPolicySubentry操作属性的值。这将为您提供pwdPolicy对象的DN,然后将其作为带有属性的上下文进行查找,并获取以“pwd”开头的所有属性。但是,如果用户具有默认密码策略,则必须查看LDAP服务器配置以查找其DN。在OpenLDA
accountExpires
的属性,该属性是帐户过期的日期
Active Directory还有一个名为userAccountControl
的用户属性,它是一个位掩码,用于指定各种与帐户相关的状态。例如,如果设置了位24,则表示密码已过期(userAccountControl&0x800000!=0
)。第2位为“帐户禁用”等。请参阅
对于其他LDAP服务器(OpenLDAP、ApacheDS等),您必须查看文档。通常,在这些情况下,至少有三个不同的问题值得关注 帐户状态,包括帐户已锁定、已过期或已禁用等信息。 帐户“状态”通常反映在MMC帐户选项卡上。 我们在wiki上发布了一些关于LDAP值的信息,网址为: 和 密码状态,即密码已过期 不幸的是,反映这些条件状态的属性没有实时反映在AD中。有些仅在用户尝试进行身份验证时更新。(成功或未成功)
-jim如果要通过LDAP查询获取密码策略,请尝试以下操作 当前域中没有PSO策略
String searchDomain= "DC=company,DC=ORG";
String ldapQuery = "(&(objectClass=domainDNS))";
String ldapAttribute = "maxPwdAge";
如果使用PSO策略,请尝试以下代码
String domainLookupString = "CN=UsersPSO,CN=Password Settings Container,CN=System,DC=company,DC=ORG";
String ldapFilterString = "(&(objectClass=msDS-PasswordSettings))";
String ldapAttribute = "msDS-MaximumPasswordAge"