IDM LDAP bind issue

Must-share information (formatted with Markdown):

  • which versions are you using (SonarQube Server / Community Build, Scanner, Plugin, and any relevant extension)
  • how is SonarQube deployed: zip, Docker, Helm
  • what are you trying to achieve
  • what have you tried so far to achieve this

Do not share screenshots of logs – share the text itself (bonus points for being well-formatted)!

SonarQube deployed with zip
I am trying to bind our IDM (Identity Mangement) to SonarQube. IDM is our version of Active Directory but it’s made by Red Hat.
I have looked at the following instructions:

I am not certain if I am using the correct schema when putting stuff down on the sonar.properties file.

Hi,

If you’re trying to configure this via LDAP, then your best bet is to get a 3rd-party LDAP client. Use it to figure out the correct settings and then transfer that to SonarQube. Alternately, you can integrate to Entra ID (nee Active Directory) via SAML.

 
HTH,
Ann

Unfortunately, we only run RHEL in our dept.
It has to go through our IDM for authentication.
I managed to edit the sonar.properties file and input the IDM information.
I restarted sonar and checked the logs and saw:
INFO o.s.p.l.LdapContextFactory Test LDAP connection: OK
This has to be openldap.

1 Like

So through some troubleshooting and some other posts that I have seen, I am able to get my LDAP server to show “OK” in the web.log file. The only thing that is not working is being able to authenticate.
I get this WARN error:
The response example is not set on action api/governance reports/download
The response example is not set on action api/support/info

Hi,

I doubt those warnings are relevant.

Bump your server logging - briefly - up to debug, try to log in again, and see what you get in web.log.

 
Ann

is there anyway you can walk me through on doing the DEBUG on this?

Hi,

The docs describe how to update the log level in the server config, altho that requires bouncing your instance.

Alternately, system admins can edit the log level via Administration → System.

DEBUG logs get big, fast. So don’t leave it at that level too long.

 
Ann

I ended up running the DEBUG of the sonar.properties file.
Right after the “Test LDAP connection: OK” line i get:
java.util/NoSuchElementException: null
There are multiple lines showing here regarding java. I cannot just copy and paste. I’m in a black site. I would have to type everything down.

Hi,

Without more of the log, I can’t help much.

I can only suggest you research the error in an LDAP context.

 
HTH,
Ann

Then I will type down the error.

I hope this helps.

User mapping: LdapUserMapping{baseDN=ou=users, cn=accounts, dc=**, dc=**, dc=**, dc=**, request=(uid={0}), realNameAttribute=cn, emailAttribute=mail}
Groups will not be synchronized, because property 'ldap.group.baseDN' is empty.
Initilalizing LDAP context {java.naming.referral=follow, con.sun.jndi.ldap.connect.pool=true, java.maming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory, java.naming.security.sasl.realm=****, java.naming.provider.url=ldap://****:389, java.naming.security.authentication=simple}
Test LDAP connection on ldap://****:389: OK
Failed to execute command
java.util.NoSuchElementExceptioin: null
    at java.base/java.util.Scanner.throwFor (Scanner.java:937)
    at java.base/java/util.Scanner.next (Scanner.java:1478)
    at org.sonar.server.platform.ContainerSupportImpl.executeCommand(ContainerSupportImpl.java:130)
    at org.sonar.server.platform.ContainerSupportImpl.getMountOverlays(ContainerSupportImpl.java:117)
    at org.sonar.server.platform.ContainerSupportImpl.isDocker(ContainerSupportImpl.java:96)
    at org.sonar.server.platform.ContainerSupportImpl.popularCache(ContainerSupportImpl.java:60)
    at org.sonar.server.platform.ContainerSupportImpl.<init>(ContainerImpl.java:55)
    at java.base/jdk.internal.reflect.NativeConstructionAccessorImpl.newInstance0(Navitve Method)
    at java.base/jdk.internal.reflect.NativeConstructionAccessorImpl.newInstance(NativeConstructorAccesorImpl.java:77)
    at java.base/jdk.internal.reflect.NativeConstructionAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:213)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:117)
    at org.springframework.beans.factory.support.ConstructorResolver.lamba$instantiate$0(ContructorResolver.java:298)
    at java.base/java.security.AccessController.doPriviliedged(AcccessController.java:399)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:297)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:287)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:209)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resovleDependency(DefaultListableBeanFactory.java:1311)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:781)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:220)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:209)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1609)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1573)
    at org.springframework.beans.factory.support.DefaultListableBeanFactoryresolveMultipleBeans(DefaultListableBeanFactory.java:1439)
    at org.springframework.beans.factory.support.DefaultListableBeanFactorydoResolveDependency(DefaultListableBeanFactory.java:1349)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resovleDependency(DefaultListableBeanFactory.java:1311)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:781)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:220)
    at org.springframework.beans.factory.support.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372)
    at org.springframework.beans.factory.support.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:209)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resovleDependency(DefaultListableBeanFactory.java:1311)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:781)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:220)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:209)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1609)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1573)
    at org.springframework.beans.factory.support.DefaultListableBeanFactoryresolveMultipleBeans(DefaultListableBeanFactory.java:1439)
    at org.springframework.beans.factory.support.DefaultListableBeanFactorydoResolveDependency(DefaultListableBeanFactory.java:1349)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resovleDependency(DefaultListableBeanFactory.java:1311)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:781)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:220)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resovleDependency(DefaultListableBeanFactory.java:1311)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:781)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:220)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:209)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1609)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1573)
    at org.springframework.beans.factory.support.DefaultListableBeanFactoryresolveMultipleBeans(DefaultListableBeanFactory.java:1439)
    at org.springframework.beans.factory.support.DefaultListableBeanFactorydoResolveDependency(DefaultListableBeanFactory.java:1349)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resovleDependency(DefaultListableBeanFactory.java:1311)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:781)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:220)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:209)
    at org.springframework.beans.factory.support.DefalutListableBeanFactory.preInstantiateSingletons(DefaulstslistableBeanFactory.java:955)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:591)
    at org.sonar.core.platform.SpringComponentContainer.startComponenets(SpringComponentContainer.java:225)
    at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:80)
    at org.sonar.server.platform.platformlevel.PlatformLevel4.start(PlatformLevel4.java:737)
    at org.sonar.server.platform.platformImpl.start(PlatformImpl.java:217)
    at org.sonar.server.platform.platformImpl.startLevel34Containers(PlatformImpl.java:197)
    at org.sonar.server.platform.platformImpl$AutoStarterRunnablerunIfNotAborted(PlatformImpl.java:365)
    at org.sonar.server.platform.platformImpl$1.doRun(PlatformImpl.java:116)
    at org.sonar.server.platform.platformImpl$AutoStarterRunnable.run(PlatformImpl.java:349)
    at java.base/java.lang.Thread.run(Thread.java:840)

Hi,

I haven’t seen this error before, but that doesn’t necessarily mean much.

I think the best thing to do here is back up a step: download a 3rd-party LDAP client and feed your settings into it. Verify through that client that your settings are good. If they are, come back to me with that. If not, work on your settings until your 3rd-party client can connect, then transfer them into SonarQube and see if you still get an error.

 
Ann

I got it working.
My ldap.baseDN mapping part.
I had to change from “ou” to “cn” for users.
I restarted and I was now able to login.

1 Like