Azure AD 与 sonarqube 集成

Azure AD integration with sonarqube

我是 运行 sonarqube on https 使用 nginx 反向代理。

这是我的 nginx 反向代理配置。


server{
   server_name sonarqube.mydomain.co.in;
    access_log  /var/log/nginx/sonar.access.log;
    error_log   /var/log/nginx/sonar.error.log;
    proxy_buffers 16 64k;
    proxy_buffer_size 128k;

    location / {
        proxy_pass  http://127.0.0.1:9000;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto http;
        proxy_set_header X-Forwarded-Proto https;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/sonarqube.mydomain.co.in/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/sonarqube.mydomain.co.in/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server{
    if ($host = sonarqube.mydomain.co.in) {
        return 301 https://$host$request_uri;
    } # managed by Certbot



    listen      80;
   server_name sonarqube.mydomain.co.in;
    return 404; # managed by Certbot


}


我已经从 Azure AD 的库中添加了 sonarqube。之后,我在我的 AZURE SSO.In 中选择了 SAML 我的回复 url 我已经配置 https://sonarqube.mydomain.co.in/oauth2/callback/saml and in my signin url https://sonarqube.mydomain.co.in。我已经配置了从 azure AD 到我的 sonarqube 插件的相关字段。

现在,当我尝试在我的 sonarqube 中通过 SAML 登录时,出现此错误

You're not authorized to access this page. Please contact the administrator.

Reason: The response was received at http://sonarqube.mydomain.co.in/oauth2/callback/saml instead of https://sonarqube.mydomain.co.in/oauth2/callback/saml

这是因为我的 nginx 反向代理配置吗?我怎样才能解决这个问题? 任何帮助将不胜感激

• 根据配置反向代理的sonarqube文档,应该配置为在每个http请求头中设置值'X_FORWARDED_PROTO: https'。没有这个 属性,由 SonarQube 服务器发起的重定向将回退到 HTTP。在您的代码中,您错误地指定将请求从 HTTP 重定向到 HTTPS。您没有在“位置”参数下指定任何位置 return 到“服务器”class 下。正确的脚本格式应该如下:-

     ‘ server {
       listen 80;
       server_name sonarqube.mydomain.co.in;
       if ($host = sonarqube.mydomain.co.in)
       location /
       return 301 https://$host$request_uri;
     }
   } ‘

此外,请删除代码中传递的“proxy_redirect off”参数,该参数阻止通过 nginx 代理的重定向请求,并删除“proxy_set_header X-Forwarded-Proto http”参数还。而不是'proxy_set_header X-Forwarded-Proto https',你可以传递一个像'$redirect'这样的变量并如下定义变量以确保所有请求都到达HTTPS端口:-

if ($scheme != "https") {
 return 301 https://$host$request_uri permanent;
 }