[ 
https://issues.jenkins-ci.org/browse/JENKINS-12180?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dan Dexter reopened JENKINS-12180:
----------------------------------

      Assignee:     (was: Kohsuke Kawaguchi)

This appears to still be happening, perhaps a regression or some other cause. 
If I only have a group specified in matrix-based security it will not allow a 
full login and I get a 404 error. If I have my AD user name specified then it 
works.
----
WARNING: Credential exception tying to authenticate against . domain
org.acegisecurity.userdetails.UsernameNotFoundException: Authentication was 
successful but cannot locate the user information for group
----
                
> Active Directory Plugin - Adding AD Group Throws BadCredentialsException
> ------------------------------------------------------------------------
>
>                 Key: JENKINS-12180
>                 URL: https://issues.jenkins-ci.org/browse/JENKINS-12180
>             Project: Jenkins
>          Issue Type: Bug
>          Components: active-directory
>    Affects Versions: current
>         Environment: OS: CentOs 6 64-bit
> Hardware Platform: VMWare ESXi 5.0
>            Reporter: Tony Lee
>              Labels: AD,, active_directory,, plugins
>
> Adding an AD group, e.g. ciusers on Authorization type "Project-based Matrix 
> Authorization Strategy", throws BadCredentialsException.
> Issue:
> doCheckName_() first tries finding a user and this fails and throws the 
> BadCredentialsException. The function doCheckName_() then tries 
> loadGroupByGroupName() which is throwing UserMayOrMayNotExistException right 
> away.  Function doCheckName_() uses SecurityRealm.loadGroupByGroupName() 
> instead of LDAPSecurityRealm.loadGroupByGroupName().
> Snippet of loadGroupByGroupname() from the SecurityRealm class.
>     public GroupDetails loadGroupByGroupname(String groupname) throws 
> UsernameNotFoundException, DataAccessException {
>         throw new UserMayOrMayNotExistException(groupname);
>     }
> Snippet of loadGroupByGroupname() from the LDAPSecurityRealm class.
>     public GroupDetails loadGroupByGroupname(String groupname) throws 
> UsernameNotFoundException, DataAccessException {
>         // TODO: obtain a DN instead so that we can obtain multiple 
> attributes later
>         String searchBase = groupSearchBase != null ? groupSearchBase : "";
>         final Set<String> groups = 
> (Set<String>)ldapTemplate.searchForSingleAttributeValues(searchBase, 
> GROUP_SEARCH,
>                 new String[]{groupname}, "cn");
>         if(groups.isEmpty())
>             throw new UsernameNotFoundException(groupname);
>         return new GroupDetails() {
>             public String getName() {
>                 return groups.iterator().next();
>             }
>         };
>     }
> Snippet of doCheckName_():
>         public FormValidation doCheckName_(String value, AccessControlled 
> subject, Permission permission) throws IOException, ServletException {
>             if(!subject.hasPermission(permission))  return 
> FormValidation.ok(); // can't check
>             final String v = value.substring(1,value.length()-1);
>             SecurityRealm sr = Jenkins.getInstance().getSecurityRealm();
>             String ev = Functions.escape(v);
>             if(v.equals("authenticated"))
>                 // system reserved group
>                 return FormValidation.respond(Kind.OK, makeImg("user.png") 
> +ev);
>             try {
>                 sr.loadUserByUsername(v);
>                 return FormValidation.respond(Kind.OK, 
> makeImg("person.png")+ev);
>             } catch (UserMayOrMayNotExistException e) {
>                 // undecidable, meaning the user may exist
>                 return FormValidation.respond(Kind.OK, ev);
>             } catch (UsernameNotFoundException e) {
>                 // fall through next
>             } catch (DataAccessException e) {
>                 // fall through next
>             }
>             try {
>                 sr.loadGroupByGroupname(v);
>                 return FormValidation.respond(Kind.OK, makeImg("user.png") 
> +ev);
>             } catch (UserMayOrMayNotExistException e) {
>                 // undecidable, meaning the group may exist
>                 return FormValidation.respond(Kind.OK, ev);
>             } catch (UsernameNotFoundException e) {
>                 // fall through next
>             } catch (DataAccessException e) {
>                 // fall through next
>             }
>             // couldn't find it. it doesn't exist
>             return FormValidation.respond(Kind.ERROR, makeImg("error.png") 
> +ev);
>         }
> Stack trace snippet:
> Failed to test the validity of the user name ciusers
> org.acegisecurity.BadCredentialsException: Authentication was successful but 
> cannot locate the user information for ciusers
>       at 
> hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:147)
>       at 
> hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:105)
>       at 
> hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:64)
>       at 
> hudson.plugins.active_directory.AbstractActiveDirectoryAuthenticationProvider.loadUserByUsername(AbstractActiveDirectoryAuthenticationProvider.java:23)
>       at 
> hudson.plugins.active_directory.ActiveDirectorySecurityRealm.loadUserByUsername(ActiveDirectorySecurityRealm.java:514)
>       at 
> hudson.security.GlobalMatrixAuthorizationStrategy$DescriptorImpl.doCheckName_(GlobalMatrixAuthorizationStrategy.java:303)
>       at 
> hudson.security.GlobalMatrixAuthorizationStrategy$DescriptorImpl.doCheckName(GlobalMatrixAuthorizationStrategy.java:288)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to