# SAML based SonarQube Single Sign-On

**URL:** <https://community.sonarsource.com/t/saml-based-sonarqube-single-sign-on/48310>\
**Category:** SonarQube Server / Community Build\
**Tags:** saml, sso, sonarqube\
**Created:** [August 18, 2021, 5:28pm UTC](https://community.sonarsource.com/t/saml-based-sonarqube-single-sign-on/48310 "2021-08-18T17:28:44Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![V\_S1](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/v_s1/32/22860_2.png) [@V\_S1](https://community.sonarsource.com/u/V_S1)\
**Post date:** [August 18, 2021, 5:28pm UTC](https://community.sonarsource.com/t/saml-based-sonarqube-single-sign-on/48310/1 "2021-08-18T17:28:44Z")

</div>

Hi,

We are using Sonarqube 7.9.6 and setting up Single Sign-On with Azure.  
We have configured revere proxy with below settings to redirecto Sonarqube:

```auto
ProxyRequests Off
ProxyPreserveHost On
# For SonarQube
<VirtualHost *:443>
  #RequestHeader set X-Forwarded-Proto "https"
  ServerName sonar.isites.org
  ServerAdmin abc@abc.com
  ProxyPass / http://server1:8000/
  ProxyPassReverse / http://server1:8000/
  ErrorLog logs/error.log
  CustomLog logs/access.log common
  SSLCertificateFile /u01/server.cert
  SSLCertificateKeyFile /u01/server.key
</VirtualHost>

```

Created application in azure with below settings:

 ![Capture](https://europe1.discourse-cdn.com/sonarsource/uploads/sonarcommunity/original/3X/d/f/df88b6653c1574465230fad0e9dac8933e64f947.jpeg)

Installed SAML plugin for Sonarqube and configured it.

 ![Capture1](https://europe1.discourse-cdn.com/sonarsource/uploads/sonarcommunity/original/3X/7/e/7eacdcfc4cc9de27d4f83d42f2cb366be334a824.jpeg)

However, when I try to login using SSO, I get below error:

```auto
2021.08.18 13:24:43 WARN web[AXtVu+DLf/KRBdtoAARd][o.s.s.a.AuthenticationError] Fail to callback authentication with 'saml'
java.lang.NullPointerException: nameidentifier is missing
        at java.base/java.util.Objects.requireNonNull(Objects.java:246)
        at org.sonarsource.auth.saml.SamlIdentityProvider.getNonNullFirstAttribute(SamlIdentityProvider.java:165)
        at org.sonarsource.auth.saml.SamlIdentityProvider.callback(SamlIdentityProvider.java:125)
        at org.sonar.server.authentication.OAuth2CallbackFilter.handleOAuth2Provider(OAuth2CallbackFilter.java:102)
        at org.sonar.server.authentication.OAuth2CallbackFilter.handleProvider(OAuth2CallbackFilter.java:78)
        at org.sonar.server.authentication.OAuth2CallbackFilter.doFilter(OAuth2CallbackFilter.java:71)
        at org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:126)
        at org.sonar.server.platform.web.MasterServletFilter.doFilter(MasterServletFilter.java:95)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:87)
        at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:71)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.sonar.server.platform.web.CacheControlFilter.doFilter(CacheControlFilter.java:76)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.sonar.server.platform.web.SecurityServletFilter.doHttpFilter(SecurityServletFilter.java:76)
        at org.sonar.server.platform.web.SecurityServletFilter.doFilter(SecurityServletFilter.java:48)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.sonar.server.platform.web.RedirectFilter.doFilter(RedirectFilter.java:58)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.sonar.server.platform.web.requestid.RequestIdFilter.doFilter(RequestIdFilter.java:63)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.sonar.server.platform.web.RootFilter.doFilter(RootFilter.java:62)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
        at ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:256)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:353)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1629)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Thread.java:834)

```

Any suggestions on how to get past these errors?

---

<div class="post-metadata">

**Author:** ![Colin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/colin/32/55255_2.png) [@Colin](https://community.sonarsource.com/u/Colin)\
**Post date:** [August 30, 2021, 3:12pm UTC](https://community.sonarsource.com/t/saml-based-sonarqube-single-sign-on/48310/2 "2021-08-30T15:12:58Z")

</div>

Hey there.

Based on the screenshots shared, the claims available for you to use in your SonarQube SAML settings (like `sonar.auth.saml.user.login`) are `emailaddress`, `givenname`, `name`, and `surname` (plus all the bits before starting with `http://schemas....`.

None of these are `nameidentifier`, the currenet value you’ve supplied.
