【问题标题】:"SignatureError: Failed to verify signature" - Okta, pySAML2“SignatureError:无法验证签名”- Okta,pySAML2
【发布时间】:2016-05-12 21:02:35
【问题描述】:

三天来,我一直在拔头发,试图将我的头包裹在 Okta 和 SAML 周围。

在我的本地机器(OSX Mavericks)上,我能够成功地按照此处列出的步骤进行操作:http://developer.okta.com/docs/guides/pysaml2

一切正常。

但是将所有内容转移到我们的生产服务器上,这是一个 CentOS 机器,运行几乎相同的代码,我遇到了这个“SignatureError: Failed to verify signature”错误。

Traceback(最近一次调用最后一次): auth_response = saml_client.parse_authn_request_response(SAMLResponse, entity.BINDING_HTTP_POST) 文件 \"/usr/local/lib/python2.7.11/lib/python2.7/site-packages/saml2/client_base.py\",第 599 行,在 parse_authn_request_response 绑定中,**kwargs)

response = response.loads(xmlstr, False, origxml=origxml) 文件 \"/usr/local/lib/python2.7.11/lib/python2.7/site-packages/saml2/response.py\",第 510 行,加载 self._loads(xmldata, decode, origxml)

文件 \"/usr/local/lib/python2.7.11/lib/python2.7/site-packages/saml2/response.py\",第 335 行,在 _loads **args) 文件 \"/usr/local/lib/python2.7.11/lib/python2.7/site-packages/saml2/sigver.py\",第 1756 行,在正确签名的响应中 class_name(response), origdoc)

文件 \"/usr/local/lib/python2.7.11/lib/python2.7/site-packages/saml2/sigver.py\",第 1571 行,在 _check_signature raise SignatureError(\"验证签名失败\") SignatureError:验证签名失败

我已在互联网上搜寻解决此错误的方法。我是 SAML 和 Okta 的新手。

我的假设是这与 xmlsec1 在我们的生产机器上的行为不同有关。但是版本是一样的。有很多依赖项,所以我不确定问题可能出在哪里。

有人遇到过这个错误吗?关于我可以尝试什么的任何想法?

【问题讨论】:

    标签: python encryption cryptography saml-2.0 okta


    【解决方案1】:

    我知道这有点晚了,但万一其他人遇到这种情况:

    pysaml2 使用 python 的内置日志记录提供了很多日志记录,我为 saml2.sigver 定义了一个处理程序,它提供了很多信息。在那些日志中我发现了这个:

    Error: unable to load xmlsec-openssl library. Make sure that you have
    this it installed, check shared libraries path (LD_LIBRARY_PATH)
    envornment variable or use "--crypto" option to specify different
    crypto engine.
    

    原来我需要安装 xmlsec1-openssl。 希望这对将来的某人有所帮助。

    【讨论】:

      【解决方案2】:

      xmlsec1 打交道会非常令人沮丧!

      我建议做的主要事情是enabling debugging in PySAML2,和/或setting the PYSAML2_KEEP_XMLSEC_TMP environment variable,和/或manually enable this code path in sigver.py - 一般的想法是查看PySAML2正在调用的xmlsec1命令并让PySAML2离开周围的临时文件,以便您可以自己测试命令。

      我记得,我过去遇到的大多数问题都涉及 PySAML2 找不到 xmlsec1 二进制文件。 The get_xmlsec_binary() function in sigver.py 负责查找 xmlsec1 二进制文件。我建议您查看get_xmlsec_binary() 中的代码,并确保它在您系统上的正确位置查找。

      【讨论】:

        【解决方案3】:

        根据操作系统,您还需要安装其他库。 就我而言,我在 CentOS 服务器上遇到了问题,因此除了 xmlsec1 之外,我还需要安装更多 2 个依赖项:

        yum install libffi-devel xmlsec1 xmlsec1-openssl
        

        这解决了我的问题。 您还应该查看 Okta 的文档。他们有一个关于如何使用PySAML2 为用 Python 编写的应用程序添加对Okta(通过SAML)的支持的指南。

        https://developer.okta.com/code/python/pysaml2/

        【讨论】:

          猜你喜欢
          • 2016-01-14
          • 1970-01-01
          • 2011-11-27
          • 2013-12-03
          • 1970-01-01
          • 2016-06-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多