首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nginx反向代理-收件人端点后面的Tomcat与SAML响应不匹配。

Nginx反向代理-收件人端点后面的Tomcat与SAML响应不匹配。
EN

Stack Overflow用户
提问于 2021-02-17 19:30:15
回答 1查看 809关注 0票数 2

以下是这些组件:

  1. Spring在tomcat
  2. Azure AD IdP
  3. Nginx反向代理

上的应用

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的最佳实践。这是我的应用程序的配置

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               proxyName="myapp.example.com"
               proxyPort="443"
               **scheme="https"** />
EN

Stack Overflow用户

发布于 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

代码语言:javascript
运行
复制
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               proxyName="myapp.example.com"
               proxyPort="443"
               **scheme="https"** />
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66248765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档