Active Directory的JNDI(安全)客户端

时间:2016-09-09 08:26:05

标签: java active-directory jndi kerberos gssapi

我是JNDI和Active Directory的新手 我需要编写一个简单的AD客户端(用Java编写) 它应支持基本用户身份验证以及对用户和组的CRUD操作。

我发现asyncio.wait对基础知识非常有帮助 我已经设法在虚拟机上安装Windows Server 2012 R2并从代码连接到其Active Directory。

问题在于,据我所知,整个通信都是通过网络以明文形式发送的,包括我的用户名,密码和操作。

我应该使用Kerberos进行身份验证吗? 所有我对Kerberos的了解都是我所读到的This tutorial 对我而言,最好的解决方案是通过我当前对JNDI的非常简单的使用来“插入”我的通信安全性的最简单方法。

我也非常欣赏在我的虚拟机上使用AD进行此类通信的最简单方法。

    private static DirContext getDirContext() {
    Hashtable<String, String> env = new Hashtable<>();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "ldap://" + serverIpAddress + ":" + Integer.toString(serverLdapPort));
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, connectionUsername + "@" + serverDomain);
    env.put(Context.SECURITY_CREDENTIALS, connectionPassword);
    try {
        return new InitialDirContext(env);
    } catch (NamingException e) {
        return null;
    }
}


    public static boolean authenticate(String username, String password) {
    connectionUsername = username;
    connectionPassword = password;
    DirContext dirContext = getDirContext();
    if (dirContext != null) {
        closeDirContext(dirContext);
        return true;
    } else {
        return false;
    }
}

0 个答案:

没有答案