Hello all,
I'm triyng to connect into an AD , authenticate a user and get attribute
values.
With code bellow I succeed in user authentication, but when I try to make
the search I get the "perform this operation a successful bind must be
completed on the connection" error (see bellow). I've googled a lot, but no
solution found.... anyone can help?
Kr,
NRC
-----------------------------------------------------------------------------------------
final JndiLdapContextFactory contextFactory = new
JndiLdapContextFactory();
contextFactory.setUrl("ldap://localhost:389/DC=doc,DC=com");
contextFactory.setSystemUsername("[email protected]");
contextFactory.setSystemUsername("a1b2c3d4!");
ActiveDirectoryRealm ldapRealm = new ActiveDirectoryRealm();
ldapRealm.setLdapContextFactory(contextFactory);
ldapRealm.setSearchBase("DC=doclog,DC=com");
ldapRealm.setSystemUsername("[email protected]");
ldapRealm.setSystemUsername("a1b2c3d4!");
Hashtable rolesvsGroups = new Hashtable<>();
rolesvsGroups.put( "admins","ADMIN");
rolesvsGroups.put( "powerusers","PWUSER");
ldapRealm.setGroupRolesMap(rolesvsGroups );
ldapRealm.init();
LdapContext ldapContext =
contextFactory.getSystemLdapContext();
SecurityManager securityManager = new
DefaultSecurityManager(ldapRealm);
SecurityUtils.setSecurityManager(securityManager);
Subject currentUser = SecurityUtils.getSubject();
if (!currentUser.isAuthenticated()) {
AuthenticationToken authenticationToken = new
UsernamePasswordToken("[email protected]", "a1b2c3d4!");
currentUser.login(authenticationToken);
}
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
String[] attrIDs = { "internationaliSDNNumber",
"sn"};
constraints.setReturningAttributes(attrIDs);
NamingEnumeration answer = ldapContext.search("DC=doclog,DC=com",
"uid="+ "geanes", constraints);
if (answer.hasMore()) {
Attributes attrs = ((SearchResult)
answer.next()).getAttributes();
logger.info(attrs.get("internationaliSDNNumber"));
logger.info(attrs.get("sn"));
logger.info(currentUser.hasRole("PWUSER"));
}else{
throw new Exception("Error getting user properties");
}
logger.info("User [" + currentUser.getPrincipal() +"] logged
succesfully");
--------------------------------------------------------------------------------------------------
Exception in thread "main" javax.naming.NamingException: [LDAP: error code 1
- 000004DC: LdapErr: DSID-0C0906E8, comment: In order to perform this
operation a successful bind must be completed on the connection., data 0,
v1db1
--------------------------------------------------------------------------------------------------
--
View this message in context:
http://shiro-user.582556.n2.nabble.com/Bind-error-while-searching-Active-Directory-tp7579587.html
Sent from the Shiro User mailing list archive at Nabble.com.