我正在配置NetIQ IDAM,NetIQ IDAM的一个组件即User Application在预配置的Tomcat 8.5.x上运行。 User Application具有一些预定义的功能,可以在URL中强制执行反斜杠,但tomcat会阻止URL中的BlackSlashes作为安全措施。
我尝试使用这些选项:
-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true
但没用
并且由于组件的一部分不可自定义,除了以某种方式配置tomcat以允许URL中的反斜杠之外,我没有任何其他选项。
任何建议我如何实现这一目标。
HTTP请求示例:?targetName = abc @ xyz \ .com
客户端坏了。当在查询字符串中使用时,RFC 7230和RFC 3986要求\
字符是%nn编码的。
通常,Tomcat社区实现规范并将任何非规范合规性视为错误。 Tomcat社区期望其他开发人员社区也这样做。
不幸的是,浏览器供应商选择忽略RFC 7230和RFC 3986的%nn编码要求,尽管声称自己正在按照自己的规范工作,但最终结果是每个主要浏览器%nn编码不同的子集需要编码的字符数。
对你来说好消息是,由于这个混乱,Tomcat 9.0.8,8.5.21,8.0.52和7.0.87将引入(这些版本仍然在我输入时投票)选项允许直接在URI路径和/或查询字符串中使用字符而不使用%nn编码。
一旦这些版本可用,您将能够配置Tomcat以接受查询字符串中的\
。同时,无论如何,我建议针对规范不合规提出针对客户端的错误。最好有一个正常工作的客户端,以便您可以放弃在Tomcat中解决问题。