我有一个用户登录名,需要使用 Active Directory 进行身份验证。 有办法做到这一点吗?
我使用 Android Java。我与域控制器位于同一网络中。
我有用户 DN 和密码。 我还有域控制器地址。
您可以使用UnboundID LDAP SDK。
UnboundID:“UnboundID网站”
这将允许您针对域控制器验证凭据。
private static final String DC_ADDRESS = "xx.xxx.xxx.xxx";
public static Boolean authenticate(String bindDN, String password) {
String searchFilter = "(sAMAccountName=" + username +")";
final SSLUtil sslUtil = new SSLUtil(new TrustAllTrustManager());
try {
SSLSocketFactory sslSocketFactory = sslUtil.createSSLSocketFactory();
JavaToLDAPSocketFactory ldapSocketFactory =
new JavaToLDAPSocketFactory(sslSocketFactory);
LDAPConnection c = new LDAPConnection(ldapSocketFactory, DC_ADDRESS, 636);
BindResult bindResult = c.bind(bindDM, password);
if (c.isConnected()) {
c.close();
}
if(bindResult.getResultCode() != ResultCode.SUCCESS) {
Log.w(TAG, "Authentication failed");
return false;
}
return true;
} catch(LDAPException e) {
LogUtil.w(TAG, "Authentication failed: " + e.getMessage());
LogUtil.e(TAG, "StackTrace: " + Arrays.toString(e.getStackTrace()));
return e.toLDAPResult().getResultCode();
} catch(Exception e) {
LogUtil.e(TAG, "Exception caught while authenticating: " + e.getMessage());
LogUtil.e(TAG, "StackTrace: " + Arrays.toString(e.getStackTrace()));
}
return false;
}