“SignatureError:无法验证签名” - Okta,pySAML2

时间:2016-05-12 21:02:35

标签: python encryption cryptography saml-2.0 okta

连续三天,我一直在拉着头发试图把头包裹在Okta& amp; SAML。

在我的本地计算机(OSX Mavericks)上,我能够成功执行此处列出的步骤:http://developer.okta.com/docs/guides/pysaml2

事情有效。

但是把所有东西都移到我们的生产服务器上,这是一个CentOS盒子,运行几乎相同的代码,我遇到了这个“SignatureError:无法验证签名”错误。

  

追踪(最近一次通话):   auth_response = saml_client.parse_authn_request_response(SAMLResponse,entity.BINDING_HTTP_POST)       File \“/ 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)

     

File \“/ 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行,在correct_signed_response中           class_name(response),origdoc)

     

文件\“/ usr / local / lib / python2.7.11 / lib / python2.7 / site-packages / saml2 / sigver.py \”,第1571行,_check_signature     引发SignatureError(\“无法验证签名\”)      SignatureError:无法验证签名

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

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

有没有人遇到过这个错误?关于我可能尝试的任何想法?

3 个答案:

答案 0 :(得分:3)

我知道这有点晚了,但万一有人遇到这个问题:

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。 希望这可以帮助将来的某个人。

答案 1 :(得分:0)

处理xmlsec1会非常令人沮丧!

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

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

答案 2 :(得分:0)

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

yum install libffi-devel xmlsec1 xmlsec1-openssl

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

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