SonarQube LDAP 身份验证不起作用
SonarQube LDAP authentication is not working
目前,正在从 SonarQube 5.0.1 连接到 Apache Directory Server 2.0。在 sonar.properties 文件中给出了以下条目:
# LDAP configuration
# General Configuration
sonar.security.realm=LDAP
sonar.security.savePassword=false
ldap.url=ldap://10.53.67.11:30389
# User Configuration
ldap.user.baseDn=o=TechMahindra
ldap.user.request=(&(objectClass=inetOrgPerson)(uid={login}))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail
# Group Configuration
ldap.group.baseDn=cn=sonar-users,ou=groups,ou=devops,o=TechMahindra
ldap.group.request=(&(objectClass=groupOfNames)(member={dn}))
ldap.group.idAttribute=cn
对于这些条目,身份验证对任何用户都不起作用。
注意 1:"Enable Access Control" 选项已在 Apache 目录服务器中选中。
注2:但是,如果上面提到的"Enable Access Control"选项没有在Apache Directory Server中被勾选,身份验证有效。而且,授权在那个中不起作用案例 - 即 - 所有用户都能够登录到 SonarQube,无论该用户是否属于 LDAP 中的声纳用户组。
- "Enable Access Control" 用于授权访问 LDAP 目录信息树(而不是用于授权应用程序)。这是我后来发现的。
- 对于应用程序级别的授权,使用 memberOf 或 isMemberOf 等属性。
- Apache Directory Server 在撰写此内容时不支持 memberOf 或 isMemberOf 属性。
因此,我为此目的使用了 OpenLDAP,并通过将其添加到 slapd.conf 文件来使用 memberOf 属性(覆盖,换句话说)。
overlay memberof
认证/授权修改后的代码如下:
# LDAP configuration
# General Configuration
sonar.security.realm=LDAP
sonar.security.savePassword=false
ldap.url=ldap://10.53.67.8:389/
ldap.bindDn=o=techmahindra
ldap.bindPassword=secret
# User Configuration
ldap.user.baseDn=o=techmahindra
ldap.user.request=(&(objectClass=inetOrgPerson)(uid={login})(memberOf=cn=sonar-users,ou=groups,ou=devops,o=techmahindra))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail
# Group Configuration
ldap.group.baseDn=ou=groups,ou=devops,o=techmahindra
ldap.group.request=(&(objectClass=groupOfNames)(cn=sonar-users)(member={dn}))
ldap.group.idAttribute=cn
目前,正在从 SonarQube 5.0.1 连接到 Apache Directory Server 2.0。在 sonar.properties 文件中给出了以下条目:
# LDAP configuration
# General Configuration
sonar.security.realm=LDAP
sonar.security.savePassword=false
ldap.url=ldap://10.53.67.11:30389
# User Configuration
ldap.user.baseDn=o=TechMahindra
ldap.user.request=(&(objectClass=inetOrgPerson)(uid={login}))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail
# Group Configuration
ldap.group.baseDn=cn=sonar-users,ou=groups,ou=devops,o=TechMahindra
ldap.group.request=(&(objectClass=groupOfNames)(member={dn}))
ldap.group.idAttribute=cn
对于这些条目,身份验证对任何用户都不起作用。
注意 1:"Enable Access Control" 选项已在 Apache 目录服务器中选中。
注2:但是,如果上面提到的"Enable Access Control"选项没有在Apache Directory Server中被勾选,身份验证有效。而且,授权在那个中不起作用案例 - 即 - 所有用户都能够登录到 SonarQube,无论该用户是否属于 LDAP 中的声纳用户组。
- "Enable Access Control" 用于授权访问 LDAP 目录信息树(而不是用于授权应用程序)。这是我后来发现的。
- 对于应用程序级别的授权,使用 memberOf 或 isMemberOf 等属性。
- Apache Directory Server 在撰写此内容时不支持 memberOf 或 isMemberOf 属性。
因此,我为此目的使用了 OpenLDAP,并通过将其添加到 slapd.conf 文件来使用 memberOf 属性(覆盖,换句话说)。
overlay memberof
认证/授权修改后的代码如下:
# LDAP configuration # General Configuration sonar.security.realm=LDAP sonar.security.savePassword=false ldap.url=ldap://10.53.67.8:389/ ldap.bindDn=o=techmahindra ldap.bindPassword=secret # User Configuration ldap.user.baseDn=o=techmahindra ldap.user.request=(&(objectClass=inetOrgPerson)(uid={login})(memberOf=cn=sonar-users,ou=groups,ou=devops,o=techmahindra)) ldap.user.realNameAttribute=cn ldap.user.emailAttribute=mail # Group Configuration ldap.group.baseDn=ou=groups,ou=devops,o=techmahindra ldap.group.request=(&(objectClass=groupOfNames)(cn=sonar-users)(member={dn})) ldap.group.idAttribute=cn