LDAP + SonarQube Authentication

Configure SonarQube to authenticate users against OpenLDAP with group-based authorization.

Docker Compose

Download and start the stack:

wget https://raw.githubusercontent.com/VibhuviOiO/infinite-containers/main/openldap/docker-compose-sonarqube.yml -O docker-compose.yml

Environment Configuration

Create .env.vibhuvioio:

LDAP_DOMAIN=vibhuvioio.com
LDAP_ORGANIZATION=Vibhuvioio
LDAP_ADMIN_PASSWORD=changeme
LDAP_CONFIG_PASSWORD=changeme
INCLUDE_SCHEMAS=cosine,inetorgperson,nis
ENABLE_MONITORING=true

Start Services

docker compose up -d

Create LDAP Groups

Create groups.ldif:

dn: ou=Groups,dc=vibhuvioio,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=sonarqube-admins,ou=Groups,dc=vibhuvioio,dc=com
objectClass: groupOfNames
cn: sonarqube-admins

dn: cn=sonarqube-users,ou=Groups,dc=vibhuvioio,dc=com
objectClass: groupOfNames
cn: sonarqube-users

Import:

docker exec -i openldap-vibhuvioio ldapadd \
  -x -D "cn=Manager,dc=vibhuvioio,dc=com" -w changeme \
  -f /dev/stdin < groups.ldif

Create Read-Only Bind Account

Create readonly.ldif:

dn: uid=sonarbind,ou=People,dc=vibhuvioio,dc=com
objectClass: inetOrgPerson
cn: Sonar Bind
sn: Bind
uid: sonarbind
userPassword: bindpassword

Import:

docker exec -i openldap-vibhuvioio ldapadd \
  -x -D "cn=Manager,dc=vibhuvioio,dc=com" -w changeme \
  -f /dev/stdin < readonly.ldif

Create Test User

Create testuser.ldif:

dn: uid=testuser,ou=People,dc=vibhuvioio,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
cn: Test User
sn: User
givenName: Test
uid: testuser
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/testuser
mail: testuser@vibhuvioio.com
userPassword: password

Import:

docker exec -i openldap-vibhuvioio ldapadd \
  -x -D "cn=Manager,dc=vibhuvioio,dc=com" -w changeme \
  -f /dev/stdin < testuser.ldif

Add User to Group

Create add-member.ldif:

dn: cn=sonarqube-users,ou=Groups,dc=vibhuvioio,dc=com
changetype: modify
add: member
member: uid=testuser,ou=People,dc=vibhuvioio,dc=com

Apply:

docker exec -i openldap-vibhuvioio ldapmodify \
  -x -D "cn=Manager,dc=vibhuvioio,dc=com" -w changeme \
  -f /dev/stdin < add-member.ldif

Verify LDAP Authentication

docker exec openldap-vibhuvioio ldapsearch \
  -x -LLL \
  -b "ou=People,dc=vibhuvioio,dc=com" "(uid=testuser)"

Verify password bind:
docker exec openldap-vibhuvioio ldapwhoami \
  -x \
  -D "uid=testuser,ou=People,dc=vibhuvioio,dc=com" \
  -w password

Login Verification

Open http://localhost:9000

Login with:

username: testuser
password: password

Successful login confirms LDAP authentication with SonarQube.