连续三天,我一直在拉着我的头发试图绕着Okta和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)File \“/ usr / local / lib / python2.7.11 / lib / python2.7 / site-packages / saml2 / response.py \”,第510行,in加载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行,在proper_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在我们的生产机器上采取不同的行为有关。但版本是相同的。有很多依赖项,所以我不确定问题可能在哪里。
有没有人遇到过这个错误?关于我可能尝试的任何想法?
我知道这有点晚了,但万一有人碰到这个:
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。希望这可以帮助将来的某个人。
处理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()
中的代码,并确保它在您的系统上查找正确的位置。
根据操作系统,您还需要安装其他库。就我而言,我在CentOS服务器上遇到了问题,所以除了xmlsec1
之外我还需要安装更多2个依赖项:
yum install libffi-devel xmlsec1 xmlsec1-openssl
这解决了我的问题。您还应该查看Okta的文档。他们有一个指南,介绍如何使用PySAML2
为Okta
(通过SAML
)添加对用Python编写的应用程序的支持。