繁体   English   中英

针对Active Directory的LDAP身份验证有哪些可接受的SECURITY_PRINCIPAL格式?

[英]What are the accepted SECURITY_PRINCIPAL formats for LDAP Authentication against Active Directory?

我试图通过LDAP对Active Directory验证用户。 以下是我使用的代码片段:

private DirContext bindAsUser(String bindPrincipal, String password) {
    Hashtable<String,String> env = new Hashtable<String,String>();
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, bindPrincipal);
    env.put(Context.PROVIDER_URL, bindUrl);
    env.put(Context.SECURITY_CREDENTIALS, password);
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.REFERRAL, "follow");

    try {
        return new InitialLdapContext(env, null);
    } catch (NamingException e) {
        e.printStackTrace()
    }
}

如果我提供的话,绑定代码有效:

  • NetBIOSDomainName\\sAMAccountName登录名,即NetBIOSDomainName\\sAMAccountName (例如域\\用户名),或
  • userPrincipalName (例如username@abc.com),或
  • distinguishedName (例如CN = username,OU = xxx,DC = abc,DC = com),或
  • objectSid (例如S-1-5-21-3623811015-3361044348-30300820-1013)

作为SECURITY_PRINCIPAL ,如果使用了sAMAccountName (例如用户名)则失败(我想只有森林中唯一的名称才有效)。

那么SECURITY_PRINCIPAL的可接受模式是什么? 我搜索了一些类似的问题,但都没有提供官方AD / LDAP文档的参考。 或者它是我可以在某处查找的配置? 谢谢!

从[MS-ADTS:Active Directory技术规范],我猜的AD官方文档。

http://msdn.microsoft.com/en-us/library/cc223499.aspx

“5.1.1.1.1简单验证”部分列出了简单验证支持的所有名称格式。

我认为你需要检查LDAP Principal Template。 它指定LDAP服务器所需的主体身份验证模板。 主体身份验证模板是必须将安全主体(登录的人)的身份验证信息传递到LDAP服务器的格式。 默认值为$ {email},这是Microsoft Active Directory所需的格式。 其他LDAP服务器需要不同的验证模板。 请咨询您的网络管理员,以了解有关LDAP服务器的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM