提交 9b208397 编写于 作者: K kohsuke

fixed initialization issue with LDAP in 1.175 (#1208)


git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@6855 71c3de6d-444a-0410-be80-ed276b4c234a
上级 1b5a3e44
...@@ -10,12 +10,16 @@ import hudson.util.spring.BeanBuilder; ...@@ -10,12 +10,16 @@ import hudson.util.spring.BeanBuilder;
import net.sf.json.JSONObject; import net.sf.json.JSONObject;
import org.acegisecurity.AuthenticationManager; import org.acegisecurity.AuthenticationManager;
import org.acegisecurity.userdetails.UserDetailsService; import org.acegisecurity.userdetails.UserDetailsService;
import org.acegisecurity.userdetails.UserDetails;
import org.acegisecurity.userdetails.UsernameNotFoundException;
import org.acegisecurity.ldap.search.FilterBasedLdapUserSearch; import org.acegisecurity.ldap.search.FilterBasedLdapUserSearch;
import org.acegisecurity.ldap.LdapUserSearch;
import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.QueryParameter; import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse; import org.kohsuke.stapler.StaplerResponse;
import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.WebApplicationContext;
import org.springframework.dao.DataAccessException;
import javax.naming.NamingException; import javax.naming.NamingException;
import javax.naming.directory.Attribute; import javax.naming.directory.Attribute;
...@@ -127,10 +131,16 @@ public class LDAPSecurityRealm extends SecurityRealm { ...@@ -127,10 +131,16 @@ public class LDAPSecurityRealm extends SecurityRealm {
BeanBuilder builder = new BeanBuilder(); BeanBuilder builder = new BeanBuilder();
builder.parse(Hudson.getInstance().servletContext.getResourceAsStream("/WEB-INF/security/LDAPBindSecurityRealm.groovy"),binding); builder.parse(Hudson.getInstance().servletContext.getResourceAsStream("/WEB-INF/security/LDAPBindSecurityRealm.groovy"),binding);
WebApplicationContext appContext = builder.createApplicationContext(); final WebApplicationContext appContext = builder.createApplicationContext();
return new SecurityComponents( return new SecurityComponents(
findBean(AuthenticationManager.class, appContext), findBean(AuthenticationManager.class, appContext),
findBean(UserDetailsService.class, appContext)); new UserDetailsService() {
final LdapUserSearch ldapSerach = findBean(LdapUserSearch.class, appContext);
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
return ldapSerach.searchForUser(username);
}
});
} }
public DescriptorImpl getDescriptor() { public DescriptorImpl getDescriptor() {
......
...@@ -28,10 +28,14 @@ bindAuthenticator(BindAuthenticator,initialDirContextFactory) { ...@@ -28,10 +28,14 @@ bindAuthenticator(BindAuthenticator,initialDirContextFactory) {
// "uid={0},ou=people" // "uid={0},ou=people"
// ] // ]
// this is when we need to find it. // this is when we need to find it.
userSearch = bean(FilterBasedLdapUserSearch, instance.userSearchBase, instance.userSearch, initialDirContextFactory) { userSearch = ldapUserSearch;
searchSubtree=true
}
} }
ldapUserSearch(FilterBasedLdapUserSearch, instance.userSearchBase, instance.userSearch, initialDirContextFactory) {
searchSubtree=true
}
authoritiesPopulator(DefaultLdapAuthoritiesPopulator,initialDirContextFactory,"ou=groups") { authoritiesPopulator(DefaultLdapAuthoritiesPopulator,initialDirContextFactory,"ou=groups") {
// groupRoleAttribute = "ou"; // groupRoleAttribute = "ou";
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册