1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
public class LDAPLoginManager extends GenericService {
private static final String AT_SIGN = "@";
private UserDirectoryTools userDirectoryTools;
private ProfileTools profileTools;
private String domainName;
public LDAPUserInfo authenticate(final String userName, final String password) {
final LDAPUserInfo ldapUser = new LDAPUserInfo();
final StringBuilder securityPrincipal = new StringBuilder().append(userName)
.append(LDAPLoginManager.AT_SIGN)
.append(this.domainName);
final LDAPJNDIEnvironment ldapEnv = new LDAPJNDIEnvironment();
ldapEnv.setProviderURL("ldap://localhost:389");
ldapEnv.setSecurityAuthentication("simple");
ldapEnv.setSecurityPrincipal(securityPrincipal.toString());
ldapEnv.setSecurityCredentials(password);
final DirContext loginctx = new InitialDirContext(ldapEnv);
NamingEnumeration<SearchResult> results = null;
String distinguishedName = null;
final SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
controls.setCountLimit(10);
controls.setTimeLimit(60000);
results = loginctx.search("CN=Users,DC=test,DC=com",
MessageFormat.format("(&(objectClass=user)(sAMAccountName={0}))", userName), controls);
if (results.hasMore()) {
final SearchResult result = results.next();
final Attributes attrs = result.getAttributes();
ldapUser.addProperty("firstName", (String) attrs.get("givenName").get());
distinguishedName = (String) attrs.get("distinguishedName").get();
}
results = loginctx.search("OU=roles,DC=test,DC=com",
MessageFormat.format("(&(objectClass=group)(member={0}))", userName), controls);
while (results.hasMore()) {
final SearchResult result = results.next();
final Attributes attrs = result.getAttributes();
ldapUser.getLdapRoles().add((String) attrs.get("sAMAccountName").get());
}
return ldapUser;
}
public void modifyInternalProfileforLdapData(final LDAPUserInfo ldapUserInfo,
final RepositoryItem profileItem)
throws RepositoryException {
this.profileTools.updateProperties(ldapUserInfo.getLdapProperties(),
profileItem);
this.userDirectoryTools.removeAllRolesFromUser(profileItem.getRepositoryId());
this.userDirectoryTools.assignRolesToUser(ldapUserInfo.getLdapRoles(),
profileItem.getRepositoryId());
}
}