如何通过 Android Java 对 AD 进行用户凭据身份验证

问题描述 投票:0回答:1

我有一个用户登录名,需要使用 Active Directory 进行身份验证。 有办法做到这一点吗?

我使用 Android Java。我与域控制器位于同一网络中。

我有用户 DN 和密码。 我还有域控制器地址。

java android active-directory
1个回答
0
投票

您可以使用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;
}
© www.soinside.com 2019 - 2024. All rights reserved.