【问题标题】:SAML with Tomcat in Azure WebApps在 Azure WebApps 中使用 Tomcat 的 SAML
【发布时间】:2021-12-11 10:12:54
【问题描述】:

我正在发布一个使用 Tomcat8.5 和 Azure Webapps 的应用程序。另外,我使用ONELOGIN作为SP进行SAML认证,但是当Tomcat的小版本更新到8.5.58时,出现错误,无法认证。 错误信息如下。

“收到回复的是http://example.com/postauth.do,而不是https://example.com/postauth.do"

我之前遇到过同样的问题,可以通过将以下设置添加到 Web.xml 来解决它,但从 8.5.58 开始,我无法再解决它。

    <filter>
        <filter-name>RemoteIpFilter</filter-name>
        <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
        <init-param>
            <param-name>remoteIpHeader</param-name>
            <param-value>x-forwarded-for</param-value>
        </init-param>
        <init-param>
            <param-name>remoteIpProxiesHeader</param-name>
            <param-value>x-forwarded-by</param-value>
        </init-param>
        <init-param>
            <param-name>protocolHeader</param-name>
            <param-value>x-forwarded-proto</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>RemoteIpFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>

目前我已将版本修复为8.5.57以避免错误,但我想知道如何避免8.5.58及更高版本的错误。

最好的问候。

2021 年 10 月 28 日更新。 这是我在 KUDU 中更新 server.xml 并尝试保存时的错误图像。

【问题讨论】:

  • 你确定 Tomcat 升级是唯一改变的东西吗?这些版本之间的RemoteIpFilter 没有变化。我猜是反向代理/负载均衡器的配置发生了变化。
  • 仅实施了版本更改。没有进行其他更改。 8.5.57 确认 OK,8.5.58 确认 NG。

标签: azure-web-app-service saml tomcat8 onelogin


【解决方案1】:

RemoteIpFilter 近期没有变化。检查修复here

您可以按照以下步骤将所有 HTTP 请求重定向到 HTTPS 以实现强制 UI

  1. 进入kudu中的\tomcat\conf目录

  1. 编辑文件 server.xml
  2. 在第一个 &lt; connector&gt; 条目上方添加以下内容:

< Connector URIEncoding="UTF-8" port="80" acceptCount="100" enableLookups="false" maxThreads="150" redirectPort="443" />
  1. 保存 server.xml 文件。
  2. 编辑同一目录下的web.xml文件

  1. 滚动到文件底部并在&lt; /web-app&gt; 条目上方添加以下内容:

< security-constraint>  
< web-resource-collection>  
< web-resource-name>Protected Context</web-resource-name>  
< url-pattern>/*< /url-pattern>  
< /web-resource-collection>  
  
< !-- auth-constraint goes here if you require authentication -->  
< user-data-constraint>  
< transport-guarantee>CONFIDENTIAL</transport-guarantee>  
< /user-data-constraint>  
< /security-constraint>
  1. 保存 web.xml 文件
  2. 重新启动应用服务并立即检查。

参考这里for more info

【讨论】:

  • 我试图编辑 server.xml 文件,但因为我没有访问权限而无法编辑。你是怎么编辑的?以 Azure WebApps 为例,它是一个 PaaS 服务,所以我认为你不能编辑服务器配置文件是很自然的。
  • 您可以使用 KUDU 在 azure 中编辑 Paas Web 应用程序文件。 PaaS 没有设置传统意义上可以远程访问的虚拟机,而是为您抽象出所有复杂性。输入Kudu 服务仪表板。参考here
  • 我知道 KUDU 并使用它。但是,我只能使用 KUDU 编辑 D:/HOME 下的文件,当我尝试编辑其他路径中的文件时,出现以下错误。 “错误 409 冲突:由于错误‘访问路径’D:\Program Files\apache-tomcat,无法写入本地资源‘D:\Program Files\apache-tomcat-8.5.58\conf\server.xml’ -8.5.58\conf\server.xml' 被拒绝。'" 你有不同版本的 WebApps 或其他东西吗?你给我作为例子的路径也是C盘,所以我想它可能是一个不同的环境。
  • 如果我们使用不是来自市场的 Tomcat,则 Tomcat 路径是 D:\Program Files (x86)\apache-tomcat-X.0.X 不能由用户角色操作,我们获得管理员权限。但是,从 marketplace 使用 Tomcat 创建 App,Tomcat 将存在于我们具有写入权限的路径 D:\home\site\wwwroot\bin 中。请查看custom Java web app to Azure的官方文档
  • 我从未通过从市场中选择来部署 Tomcat,这不是我公司规定的方式。所以我想知道是否可以使用应用程序的 web.xml 设置而不是 Tomcat 的 server.xml 或 web.xml 设置来做一些事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 2011-09-29
  • 2014-05-13
  • 2017-08-30
  • 2019-01-13
  • 2019-12-01
  • 2022-01-26
相关资源
最近更新 更多