如何在Java中读取LDAP密码策略
我可以从LDAP读取用户密码策略,比如它何时到期或更多详细信息,如密码强度(最小长度等)? 我需要这些信息,因此我可以为保存在我的数据库中的用户使用相同的策略。 我的java应用程序要求数据库中的用户必须与域同步。
如果您想通过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"
通常,在这些情况下至少有三件不同的事情需要关注。
帐户状态,包括帐户锁定,已过期或已停用等信息。 帐户“状态”通常反映在MMC帐户标签上。 我们在维基上提供了有关LDAP值的一些信息:
密码状态,是密码已过期。
不幸的是,反映这些条件状态的属性并未实时反映在AD中。 有些仅在用户尝试进行身份validation时更新。 (成功或不成功)。
-Jim
是的,你可以和JNDI一起。 您必须从用户的Context中读取pwdPolicySubentry操作属性的值。 这将为您提供pwdPolicy对象的DN,然后将其作为具有属性的Context查找,并获取以“pwd”开头的所有属性。 但是,如果用户具有默认密码策略,则必须查看LDAP服务器配置以查找其DN。 在OpenLDAP中,这是在’overlay ppolicy’指令块的ppolicy_default行中的slapd.conf中。
它取决于底层LDAP服务器。
例如,如果您使用的是Microsoft Active Directory,则用户条目将具有名为accountExpires
的属性,该属性是帐户过期的日期。
Active Directory还有一个名为userAccountControl
的用户属性,它是一个指定各种帐户相关状态的位掩码。 例如,如果设置了位24,则表示密码已过期( userAccountControl & 0x800000 != 0
)。 位2是“帐户禁用”等。有关详细信息,请访问http://support.microsoft.com/kb/305144 。
对于其他LDAP服务器(OpenLDAP,ApacheDS等),您必须查看文档。
- XUGGLE ERROR:线程“main”中的exceptionjava.lang.NoClassDefFoundError:org / slf4j / LoggerFactory
- Java中的树实现(root,父级和子级)
- 使用进度回调将文件或InputStream上载到S3
- “构造函数调用必须是构造函数中的第一个语句”Java中的问题
- 流Java 8 api中是否有aggregateBy方法?
- 任何Java等同于PhantomJS?
- 将大文件上载到Amazon S3时出现问题
- String.indexof()函数调用的成本/复杂性是多少?
- 使用java Date和SimpleDateFormatvalidation范围