![](/img/trans.png)
[英]What is the correct format for SECURITY_PRINCIPAL in LDAP authentication using "com.sun.jndi.ldap.LdapCtxFactory"
[英]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.