Java 对于针对Active Directory的LDAP身份验证,什么是公认的安全性原则格式?
我正在尝试通过LDAP对Active Directory进行用户身份验证。以下是我使用的代码片段:Java 对于针对Active Directory的LDAP身份验证,什么是公认的安全性原则格式?,java,authentication,active-directory,ldap,Java,Authentication,Active Directory,Ldap,我正在尝试通过LDAP对Active Directory进行用户身份验证。以下是我使用的代码片段: private DirContext bindAsUser(String bindPrincipal, String password) { Hashtable<String,String> env = new Hashtable<String,String>(); env.put(Context.SECURITY_AUTHENTICATION, "simp
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()
}
}
private DirContext bindauser(字符串bindPrincipal,字符串密码){
Hashtable env=新的Hashtable();
环境put(Context.SECURITY_认证,“simple”);
环境保护(Context.SECURITY_PRINCIPAL,bindPrincipal);
env.put(Context.PROVIDER\uURL,bindUrl);
环境放置(Context.SECURITY\u凭证、密码);
put(Context.INITIAL\u Context\u工厂,“com.sun.jndi.ldap.LdapCtxFactory”);
环境投入(Context.reference,“follow”);
试一试{
返回新的InitialLdapContext(env,null);
}捕获(NamingE例外){
e、 printStackTrace()
}
}
如果我提供以下内容,则绑定代码将起作用:
- 下层登录名,即
(例如域\用户名),或NetBIOSDomainName\sAMAccountName
(例如。username@abc.com),或userPrincipalName
(例如CN=用户名,OU=xxx,DC=abc,DC=com),或区分名称
(例如S-1-5-21-3623811015-3361044348-30300820-1013)objectSid
SECURITY\u主体
,如果使用了sAMAccountName
(例如username)则失败(我想只有林中唯一的名称才有效)
那么
安全性原则的公认模式是什么?我搜索了一些类似的问题,但没有一个提供官方AD/LDAP文档的参考。或者它是我可以在某处查找的配置?谢谢 我认为您需要检查LDAP主体模板。它指定LDAP服务器所需的主体身份验证模板。主体身份验证模板是必须将安全主体(登录的人)的身份验证信息传递到LDAP服务器的格式。默认值为${email},这是Microsoft Active Directory所需的格式。其他LDAP服务器需要不同的身份验证模板。请与网络管理员联系,以了解有关LDAP服务器的更多信息。来自[MS-ADTS:Active Directory技术规范],我想这是AD的官方文档
“5.1.1.1.1简单身份验证”部分列出了简单身份验证支持的所有姓名表。Hey@Fung,我也面临同样的问题,您是否找到了使用sAMAccountName的解决方案?