开发者社区 问答 正文

quickBI提供免登,阿里云发送的请求报文验证不稳定,时好时坏

1. 问题描述:
阿里云quickBI提供免登,阿里云发送的请求报文验证不稳定,时好时坏。验证阿里请求报文的IDP未曾改动,结果却是有时候验证报文正常,有时候报错。

2. 报错信息
ERROR [890-exec-2][] o.o.w.m.decoder.BaseMessageDecoder[208] - Encountered error parsing message into its DOM representation
org.opensaml.xml.parse.XMLParserException: Unable to read XML from input stream
 at org.opensaml.xml.parse.BasicParserPool.parse(BasicParserPool.java:223)
 at org.opensaml.ws.message.decoder.BaseMessageDecoder.unmarshallMessage(BaseMessageDecoder.java:186)
 at org.opensaml.saml2.binding.decoding.HTTPRedirectDeflateDecoder.doDecode(HTTPRedirectDeflateDecoder.java:102)
 at org.opensaml.ws.message.decoder.BaseMessageDecoder.decode(BaseMessageDecoder.java:79)
 at org.opensaml.saml2.binding.decoding.BaseSAML2MessageDecoder.decode(BaseSAML2MessageDecoder.java:70)
 at com.vanke.yicloud.service.aliyun.AliyunSamlSSOService.handleRequest(AliyunSamlSSOService.java:134)
 at com.vanke.yicloud.service.aliyun.AliyunSamlSSOService.responseToSp(AliyunSamlSSOService.java:104)
 at com.vanke.yicloud.facade.SSOFacade.responseToSpForDataPortal(SSOFacade.java:131)
 at com.vanke.yicloud.conf.filter.idp.IDPFilterConf$1.doFilter(IDPFilterConf.java:71)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.zip.ZipException: invalid bit length repeat
 at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164)
 at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:122)
 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:2890)
 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:674)
 at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:148)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:806)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
 at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
 at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
 at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
 at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
 at org.opensaml.xml.parse.BasicParserPool$DocumentBuilderProxy.parse(BasicParserPool.java:696)
 at org.opensaml.xml.parse.BasicParserPool.parse(BasicParserPool.java:218)
 ... 26 common frames omitted

3. 相关截图

4. 已经尝试过哪些方法
1、尝试过多次代码改下;
2、和项目组同事一起商讨解决方案;

展开
收起
1089341733628532 2018-12-13 21:11:55 905 分享 版权
阿里云 AI 助理回答

根据您提供的错误信息,问题似乎出在处理SAML响应时的解压缩阶段,具体是由于无效的位长度重复导致的ZipException。这通常意味着在解码从阿里云Quick BI接收到的SAML响应时,数据格式或内容存在问题,可能是由于网络传输、编码不一致或者响应数据被意外修改等原因造成的。

针对您遇到的问题,您可以尝试以下几个解决方案:

  1. 检查网络环境:确认网络连接的稳定性,不稳定或有丢包的网络可能导致请求或响应数据损坏。

  2. 验证压缩与解压缩逻辑:确认您的系统中用于解压缩SAML响应的逻辑是否正确无误,包括使用的库版本是否兼容,以及是否有正确的异常处理机制来应对不完整或损坏的数据包。

  3. 日志分析:详细记录每次请求和响应的详细日志,包括请求头、请求体、响应头和响应体(注意脱敏敏感信息),以便于对比成功和失败请求的具体差异,找出潜在的规律或异常点。

  4. 与阿里云技术支持联系:考虑到问题涉及到阿里云Quick BI的免登功能,建议直接联系阿里云的技术支持团队,提供详细的错误信息、日志及复现步骤。阿里云团队可以协助排查是否是服务端的问题,或是需要双方协同解决的配置问题。

  5. 检查时间同步:确保服务器的时间与阿里云服务的时间同步,时间不同步也可能导致签名验证失败。

  6. 审查SAML响应处理代码:再次审查您的SAML响应处理逻辑,确保对响应的解析、验证过程遵循SAML协议规范,并且能够妥善处理各种边缘情况。

  7. 测试不同的客户端和浏览器:有时候,特定的客户端或浏览器行为可能会影响请求或响应的处理,尝试使用不同的环境进行测试,看是否能重现问题。

如果以上方法都不能解决问题,可能需要更深入地分析SAML消息的具体内容,或者考虑是否存在中间件如代理服务器、防火墙等对请求/响应进行了不当处理。希望这些建议能帮助您定位并解决问题。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答