我们正在使用活动目录来管理用户帐户。现在我们要使用密码策略来设置密码最长使用期限,以强制用户在 2 个月后重置密码。如果用户的密码即将过期(例如 3 天),我们需要在用户登录后警告用户。我们怎样才能得到这个?我们使用的是 Spring LDAP 1.3.0。我用谷歌搜索,看到密码最大年龄属性是在域中设置的。但是,我不知道如何获得这个值。
谢谢科尔
我们正在使用活动目录来管理用户帐户。现在我们要使用密码策略来设置密码最长使用期限,以强制用户在 2 个月后重置密码。如果用户的密码即将过期(例如 3 天),我们需要在用户登录后警告用户。我们怎样才能得到这个?我们使用的是 Spring LDAP 1.3.0。我用谷歌搜索,看到密码最大年龄属性是在域中设置的。但是,我不知道如何获得这个值。
谢谢科尔
您需要使用扩展的密码请求和响应控件来获取此信息。有关必要 Java 代码的链接,请参阅我对此问题的回答。
凭证到期日期和时间
获取上次更改密码的日期和时间:
private final static long DIFF_NET_JAVA_FOR_DATE_AND_TIMES = 11644473600000L;
long adDateTime = Long.parseLong(pwdLastSet);
long milliseconds = (adDateTime / 10000) - DIFF_NET_JAVA_FOR_DATE_AND_TIMES;
Date pwdLastSetDate = new Date(milliseconds);
获取可以拥有密码的最大天数:
private final static int ONE_HUNDRED_NANOSECOND = 10000000;
private final static long SECONDS_IN_DAY = 86400;
long maxPwdAge = Math.abs(Long.parseLong(maxPwdAgeStr));
long maxPwdAgeSecs = maxPwdAge / ONE_HUNDRED_NANOSECOND;
int maxPwdAgeDays = (int) (maxPwdAgeSecs / SECONDS_IN_DAY);
获取密码过期的日期和时间
Calendar cal = Calendar.getInstance();
cal.setTime(pwdLastSetDate);
cal.add(Calendar.DATE, maxPwdAgeDays);
Date credentialsExpiresDate = cal.getTime();