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;
}
我是 运行 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;
}