使用Tableau Online进行SAML配置时遇到的问题

时间:2018-07-03 10:02:27

标签: python tableau saml

我正在尝试为Tableau Online配置SAML连接。我正在使用pysaml 2来实现。配置的第一部分进展顺利,Tableau似乎找到了我的IdP,我输入了我的凭据,但随后登录崩溃。 事实是,Tableau显然正在等待签名的答案,而pysaml不会发送。 这是我的错误:

Response nor included Assertion is signed], displayableMessage=[null], exceptionClass=[null]

经过研究,我发现它与以下内容有关:

Identity Provider does not sign SAML assertions.
Verify your IdP configuration.

深入研究代码后,我发现pysaml2idp未检测到authnrequest中存在的证书。因此,他没有将证书放入响应中,因此,我的SP对此不满意。

这是saml authnrequest:

    <?xml version='1.0' encoding='UTF-8'?>
<ns0:AuthnRequest xmlns:ns0="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:ns1="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" AssertionConsumerServiceURL="https:/XXXXXXXXXXXXXXXXXXXx" Destination="https://auth.my-numii.io/sso/post" ForceAuthn="false" ID="a114ce90gdg6h2ff1beie36g2jjffj7" IsPassive="false" IssueInstant="2018-06-28T07:30:43.296Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Version="2.0"><ns1:Issuer>https://sso.online.tableau.com/public/sp/metadata?alias=ea962d84-5953-435d-a6db-71090a3b3e25</ns1:Issuer><ns2:Signature><ns2:SignedInfo><ns2:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><ns2:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /><ns2:Reference URI="#a114ce90gdg6h2ff1beie36g2jjffj7"><ns2:Transforms><ns2:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><ns2:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></ns2:Transforms><ns2:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /><ns2:DigestValue>mb4DBX4olvq8tZFtq+zMgSOcBLPjNxi+VbLCyKsaH20=</ns2:DigestValue></ns2:Reference></ns2:SignedInfo><ns2:SignatureValue>T4AK7DNDJ4pMrXB8ndmzXtvyN6RM7sjuAQ9q9l6l4+0P7mdw3JZ3TQKjB9sgwDEwb9Y4ILOrxjELUWLTV7kSXFai8a+E6j241Djmqw+LgzvLXBKFLgamVeizise78cE9WWjZonSOc0MNPYUyTdognFAlREasKkV6Rv6j4wkHu98=</ns2:SignatureValue><ns2:KeyInfo><ns2:X509Data><ns2:X509Certificate>MIICozCCAgygAwIBAgIGAWQ15g7DMA0GCSqGSIb3DQEBCwUAMGwxOzA5BgNVBAsMMmNvbS50YWJs
ZWF1c29mdHdhcmUuc2l0ZXNhbWwuY29yZS51dGlsLkNyeXB0b1V0aWxzMS0wKwYDVQQDDCRlYTk2
MmQ4NC01OTUzLTQzNWQtYTZkYi03MTA5MGEzYjNlMjUwHhcNMTgwNjI0MDc0MzQ2WhcNMjgwNjI1
MDc0MzQ2WjBsMTswOQYDVQQLDDJjb20udGFibGVhdXNvZnR3YXJlLnNpdGVzYW1sLmNvcmUudXRp
bC5DcnlwdG9VdGlsczEtMCsGA1UEAwwkZWE5NjJkODQtNTk1My00MzVkLWE2ZGItNzEwOTBhM2Iz
ZTI1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOrUrIzIyKD6hTQBWdxLVtztLXlQIgvEXp
ICdpuSVGZKga+zxcxB9s0qiDN4nYaS9MAYCxnZDO8aiM2Kx5VPygpyv0Vmh/9Ryq61BCEAuVgjNP
OvN158Qw3yGE3pPaGXkPLjCFc6kpdcKakjTB/kHpyZPRRpDnu6xYemO0fEWq/wIDAQABo1AwTjAM
BgNVHRMBAf8EAjAAMB0GA1UdDgQWBBS9YsmNneD8YD3mhYNHs42pQ3MQ9jAfBgNVHSMEGDAWgBS9
YsmNneD8YD3mhYNHs42pQ3MQ9jANBgkqhkiG9w0BAQsFAAOBgQANA3+/sAu7pxI2lmRVDNiiA8wK
YfFuVImZXe1+12priFeOVJuwKCMTfUXPM0rZ+Ktl803uBFPhpnzWCd25vnU/PgMEyISGNw72wzt4
az7z1O7PlLDEPjGCHCE/aHv/HNnJAMKK+hzJ9XPBgk2wLFixa3YOAbZ2FPQ1gurNBfJaiA==</ns2:X509Certificate></ns2:X509Data></ns2:KeyInfo></ns2:Signature></ns0:AuthnRequest>

我想我在这里错过了一些东西。是否有任何“技巧”来签署我对Tableau Online的回答?

1 个答案:

答案 0 :(得分:0)

取决于您是否正在使用TLS / SSL传输,对消息签名,对消息的某些部分进行加密等,来回传递多个证书。关键是要知道哪个证书的使用者是谁。< / p>

IdP使用在authnrequest(SP-> IdP)中发送的证书来验证请求本身内的签名-即,验证请求未被篡改。

(根据您的描述)该部分似乎正在工作,因为您的IdP提示登录并尝试响应。 (您提到,IdP未“检测到”该证书,这可能仅仅是IdP选择不验证请求的签名而已。)

由于您的SP正在寻找签名的响应,因此IdP使用其自己的证书,并将/应该将x509证书发送回(IdP-> SP),SP可以在其中验证签名的响应。 (类似于SP-> IdP请求,SP可以选择忽略验证响应中的签名,但听起来您的SP需要签名的响应。)

因此,这似乎是一个IdP配置问题:它应该(但不是)用其(IdP的)证书对响应进行签名。