1

Apache DS 文档(高级指南,第 2 章)详细提到了可以为密码策略配置设置的所有属性。

虽然其中一些工作,即我们成功地在可配置数量的错误密码尝试后成功地将自己锁定,但我们发现其中一个不起作用?或者我们使用不正确?

这是 pwdExpireWarning 属性。文档提到这一点如下(错误地指定为布尔值,什么时候应该是以秒为单位的数字?)。

“ads-pwdExpireWarning boolean 0 密码到期前的最大秒数,到期警告消息将返回给验证用户(0 表示不会向用户发送消息)”

如果我们将 ads-pwdMaxAge 设置为 120(仅用于测试目的),我们会正确地注意到密码确实会在 120 秒后过期。

但是,我们也将 ads-pwdExpireWarning 设置为 60,希望在 60 秒后,当我们尝试登录时(使用 Java JNDI 代码),我们会得到一个错误代码,指示密码即将到期的警告。我们没有收到这样的警告,或者我们应该在哪里注意到这一点?如果已标记此类警告,Java 代码应在哪里查询?

有谁知道这是否是一个已知问题,并且在当前最新版本的 Apache DS 中,不支持 ads-pwdExpireWarning 属性?

4

4 回答 4

1

正如@EJP 提到的,您需要将密码策略控制与您的请求一起传递。

使用Apache LDAP API很容易实现这一点(如果可能,请尝试远离 JNDI)。看看这个例子

于 2013-06-18T07:00:05.433 回答
0

您需要使用额外的请求控制来获取密码策略警告。遗憾的是,您必须自己编写它们,因为 JNDI 不提供它们,而且这不是开玩笑,因为您必须处理 ASN.1 解析。我自己写了一,但它们是用于 OpenLDAP,而不是 ApacheDS,它使用不同的属性名称,不确定它们是否适用。

于 2013-06-17T21:49:17.257 回答
0

可能是服务器仅在成功验证后才启动计数器,这是在发出过期警告的情况下唯一有意义的事情。

于 2013-06-17T16:27:13.797 回答
0

如前所述,我在使用另一个答案中提供的 LDAP API 示例时遇到了问题(尽管它看起来非常有用)。我正在使用的 pom.xml 依赖项如下...

    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.14</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.5.10</version>
      <scope>provided</scope>
    </dependency>

<dependency>
    <groupId>org.apache.directory.api</groupId>
    <artifactId>api-ldap-client-all</artifactId>
    <version>1.0.0-M17</version>
</dependency>

<dependency>
    <groupId>org.apache.directory.api</groupId>
    <artifactId>api-ldap-extras-util</artifactId>
    <version>1.0.0-M17</version>
</dependency>

<dependency>
    <groupId>org.apache.directory.api</groupId>
    <artifactId>api-ldap-extras-codec-api</artifactId>
    <version>1.0.0-M17</version>
</dependency>

<dependency>
    <groupId>org.apache.directory.api</groupId>
    <artifactId>api-ldap-extras-codec</artifactId>
    <version>1.0.0-M17</version>
</dependency>

<dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-core-integ</artifactId>
      <version>2.0.0-M2</version>
</dependency>

<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-all</artifactId>
    <version>2.0.0-M12</version>
</dependency>
于 2013-06-20T10:00:51.397 回答