以下是这些组件:
上的应用
SSO在没有Nginx反向代理的情况下工作,因此我认为我的应用程序和AzureID的配置是正确的。然而,当nginx反向代理发挥作用时,我遇到了一个错误。这是日志错误
SAML 2021-02-17 19:05:14,690 172.18.0.2 /SAML/SSO/别名/my_app错误org.opensaml.common.binding.decoding.BaseSAMLMessageDecoder -
消息预期目标端点https://myapp.example.com/saml/SSO/alias/my_app与收件人端点http://myapp.example.com/saml/SSO/alias/my_app;不匹配
不知道为什么http而不是https被上游传递给tomcat。我遵循了为nginix设置SSL的最佳实践。这是我的应用程序的配置
server {
listen 80;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name myapp.example.com;
access_log logs/myapp.access;
error_log logs/myapp.error error;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_pass http://myapp:8180/;
}
}
我漏掉什么了吗?如有任何意见,将不胜感激。
编辑:快速解决方案问题是tomcat没有处理X转发的Proto到servlet。解决这一问题的方法不多。最简单的方法是向in server.xml中添加scheme属性
您可以参考属性定义上的tomcat配置文档。https://tomcat.apache.org/tomcat-9.0-doc/config/http.html
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
proxyName="myapp.example.com"
proxyPort="443"
**scheme="https"** />
发布于 2021-02-19 18:52:38
问题是tomcat不处理X转发-Proto给servlet。解决这一问题的方法不多。最简单的方法是在server.xml中向连接器标记添加scheme属性。
您可以参考属性定义上的tomcat配置文档。https://tomcat.apache.org/tomcat-9.0-doc/config/http.html
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
proxyName="myapp.example.com"
proxyPort="443"
**scheme="https"** />
https://stackoverflow.com/questions/66248765
复制相似问题