连续三天,我一直在拉着头发试图把头包裹在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在我们的生产机器上采取不同的行为有关。但版本是相同的。有很多依赖项,所以我不确定问题可能在哪里。
有没有人遇到过这个错误?关于我可能尝试的任何想法?
答案 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
的支持。