我正在使用Pysaml2库在python中创建服务提供者。我试图将AuthnRequest发送到我的身份提供者Okta。我的AuthnRequest看起来像这样:

<ns0:AuthnRequest AssertionConsumerServiceURL="http://myserviceprovider:8000/saml/acs"
        Destination="https://oktapreview.com/app/myserviceprovider/k40ctg3zVVFQYUMEJFTB/sso/saml"
        ID="id-02a0e2290bbc7fda421483af6b02a9a5" IssueInstant="2015-01-20T22:57:02Z"
        ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Version="2.0" xmlns:ns0="urn:oasis:names:tc:SAML:2.0:protocol">
    <ns1:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity" xmlns:ns1="urn:oasis:names:tc:SAML:2.0:assertion">http://myserviceprovider:8000/metadata.xml</ns1:Issuer>
    <ns0:NameIDPolicy AllowCreate="true" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
</ns0:AuthnRequest>


我的SP启动302重定向到okta idp并发送此saml请求。然后,我会看到一个登录页面,在其中输入我的Okta凭据。然后,我被带到okta.com/app/UserHome(这是Okta的主页),并且没有收到任何回到我SP的断言消费者服务终结点的SAML断言。

我在Firefox中使用SAML Tracer验证了SAML活动。

在查看了来自其他服务提供商(例如box.net)的许多其他SAML AuthnRequest之后,我认为AuthNRequest的xml名称空间可能导致okta不发回acs断言。

我的命名空间是“ ns0”和“ ns1”,而不是“ saml2p”和“ samlp”。

这会引起问题吗?

关于使用pysaml2构建服务提供商的任何其他建议也将不胜感激。

最佳答案

会引起问题吗?取决于Okta在其SAML规范要求中的宽松程度,最终这是一个问题。

命名空间定义为here,并且它是IMO的规范,应遵循该命名空间。对于AuthnRequest,规范的特定部分为here

关于python - SAML AuthnRequest的XML命名空间是否重要?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28100352/

10-09 20:13