Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ApacheShiro在LDAP中支持使用sAMAccountName或任何其他参数登录?_Java_Ldap_Shiro - Fatal编程技术网

Java 如何使用ApacheShiro在LDAP中支持使用sAMAccountName或任何其他参数登录?

Java 如何使用ApacheShiro在LDAP中支持使用sAMAccountName或任何其他参数登录?,java,ldap,shiro,Java,Ldap,Shiro,我想用SamaAccountName验证和授权此用户 final namingumeration searchResultEnum=ldapCtx.search(searchBase,“objectClass=“+groupObjectClass,SUBTREE\u范围); 我尝试了以下方法,但没有成功。我试图将此参数(sAMAccountName)设置为可配置的。默认情况下,它使用UserPrincipalName和name参数 案例1: final namingumeration sear

我想用SamaAccountName验证和授权此用户

final namingumeration searchResultEnum=ldapCtx.search(searchBase,“objectClass=“+groupObjectClass,SUBTREE\u范围);
我尝试了以下方法,但没有成功。我试图将此参数(sAMAccountName)设置为可配置的。默认情况下,它使用UserPrincipalName和name参数

案例1:

final namingumeration searchResultEnum=ldapCtx.search(searchBase,(&(objectClass=*)(sAmAccountName={0})),子树范围);
案例2:

final namingumeration searchResultEnum=ldapCtx.search(searchBase,(&(objectClass=Person)(sAmAccountName={0})),子树范围);

为了支持使用sAMAccountName参数登录,我是否还需要配置其他内容?

要使用sAMAccountName,您需要添加域名。domainName\samaccountname

如何删除samAccountName前面的域\的依赖关系?注意:我支持多个域?
阿菲克,你不能。如果不指定域,您如何知道用户在哪个域中

我假设搜索库包含(DC=domain,DC=com)是不够的? 如果您可以“追踪”引用,那么添加DC=domainName、DC=com应该会起作用,因为搜索中将有多个上下文


通常,根据您的设置,您可以使用CN=Users、DC=domainName、DC=Com,并且无需转介即可工作。

您可能可以使用UPN。要使用samAccountName,您需要添加域名。domainName\samaccountname。@jeemster,如何删除samaccountname前面的域\的依赖关系?注意:我支持多个domains.AFIK,您不能。如果不指定域,您如何知道用户在哪个域中?@jeemster我认为搜索库包含(DC=domain,DC=com)是不够的?我已在Active Directory中将sAMAccountName作为可搜索字段启用索引。
final NamingEnumeration<SearchResult> searchResultEnum = ldapCtx.search(searchBase, "objectClass="+groupObjectClass, SUBTREE_SCOPE);
final NamingEnumeration<SearchResult> searchResultEnum = ldapCtx.search(searchBase, "(&(objectClass=*)(sAmAccountName={0}))", SUBTREE_SCOPE);
final NamingEnumeration<SearchResult> searchResultEnum = ldapCtx.search(searchBase, "(&(objectClass=Person)(sAmAccountName={0}))", SUBTREE_SCOPE);