3

Active Directory に対してユーザーのパスワードの有効期限を評価する必要があります。
Android と Unboundid SDK を使用しています。このコードを使用してサーバーに正常に接続できます

final SocketFactory _socket_factory;
final SSLUtil _ssl_util = new SSLUtil(new TrustAllTrustManager());

try {               
  _socket_factory = _ssl_util.createSSLSocketFactory();             
}
catch (Exception e) {
  Log.e(LOG_TAG, "*** Unable to initialize ssl", e);
  return null;              
}

LDAPConnectionOptions _ldap_connection_options = new LDAPConnectionOptions();
_ldap_connection_options.setAutoReconnect(true);
_ldap_connection_options.setConnectTimeoutMillis(30000);
_ldap_connection_options.setFollowReferrals(false);
_ldap_connection_options.setMaxMessageSize(1024*1024);

LDAPConnection _ldap_connection = new LDAPConnection(_socket_factory, _ldap_connection_options, _host, _port);

BindRequest _bind_request = new SimpleBindRequest(_username, _password);
BindResult _bind_result = _ldap_connection.bind(_bind_request);

検索を使用してユーザー属性を取得します

Filter _filter = Filter.create("(userPrincipalName=lorenzoff)");
SearchRequest _search_request = new SearchRequest(_server._base_dn, SearchScope.SUB, _filter);

しかし、どうすればドメインの属性 ' maxPwdAge ' を読み取ることができるでしょうか? ドメイン属性の中にそれを見ることができます...

ここに画像の説明を入力

ユーザーのパスワードの有効期限が切れるまでの残り日数を評価するために必要です。

4

2 に答える 2

4

私は同じ問題を抱えていて、解決策を見つけました。アイデアは単純です。ベースDNにアクセスして、その属性を取得する必要があります。

SearchRequest _search_request = new SearchRequest(_server._base_dn, 
      SearchScope.BASE, "(objectClass=*)","maxPwdAge");

これを使用すると、その属性を使用して結果を取得する必要があります。取得したSearchRequest.ALL_USER_ATTRIBUTES場合は、スクリーンショットにすべての属性が表示されます。

この属性はすべてのユーザーに共通です。次に行う必要があるのは、属性を取得する前に特定のユーザーを検索することですpwdLastSet。これは、ユーザーが最後にパスワードを変更したときのタイムスタンプを持っていると予想されるためです。

今は簡単です、あなたはユーザーがそれを最後に変更したときの有効期限とパスワードの年齢を見つける必要があります

それが役に立てば幸い

于 2012-10-25T16:56:14.600 に答える
0

が「運用」属性である場合maxPwdAgeは、検索リクエストの一部として明示的にリクエストする必要があります。「ユーザー」属性は (許可が許す限り) 返されますが、「操作」属性は明示的に要求する必要があります。リクエストmaxPwdAgeするには、次のようにリクエストを作成します。

SearchRequest _search_request = new SearchRequest(_server._base_dn, 
      SearchScope.SUB, _filter,"maxPwdAge");

コンストラクターは、SeachRequest実際には属性タイプの可変長リストも受け入れます。

SearchRequest _search_request = new SearchRequest(_server._base_dn, 
     SearchScope.SUB,_filter,"maxPwdAge","minPwdAge",
     SearchRequest.ALL_USER_ATTRIBUTES);

requests maxPwdAgeminPwdAge、およびその他すべてのユーザー属性。すべての運用属性を要求するには、 を使用しますSearchRequest.ALL_OPERATIONAL_ATTRIBUTES

于 2012-07-05T21:50:34.147 に答える