代码之家  ›  专栏  ›  技术社区  ›  nhaarman

SAML请求-声明多个协议绑定

  •  4
  • nhaarman  · 技术社区  · 15 年前

    我已经实现了一个SAML服务提供者,以支持对ASP.Netweb门户,它是在客户机站点上配置的收缩包装软件,必须能够与任何符合SAML的身份提供者进行交互。

    根据我对SAML协议的理解,SAML请求 协议绑定 属性指定响应支持哪些协议。目前,我的请求指定HTTP重定向绑定。不过,我要宣布,我支持这两项 HTTP重定向 (得到)和 HTTP-POST协议 (岗位)。在搜索了比我想重申的更多的SAML文档之后,我找不到声明多个支持的协议绑定的语法(或者这样做是否有效)。

    虽然我可以使此声明可配置,但我的首选是声明这两个绑定,以便标识提供程序可以在没有额外配置门户的情况下工作。

    下面是我的身份验证请求的示例。如果有人知道如何声明协议绑定的HTTP重定向和HTTP-POST,我将非常感谢您的意见!

    <?xml version="1.0" encoding="utf-8"?>
    <samlp:AuthnRequest 
        xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
        ID="[AUTHN_ID]" 
        Version="2.0"
        IssueInstant="[ISSUE_INSTANT]"
        ProtocolBinding="urn:oasis:names.tc:SAML:2.0:bindings:HTTP-Redirect"
        ProviderName="[PROVIDER_NAME]"
        AssertionConsumerServiceURL="[ACS_URL]">
        <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
            PortalEntityID
        </saml:Issuer>
        <samlp:NameIDPolicy 
            AllowCreate="true" 
            Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" />
    </samlp:AuthnRequest>
    

    提前感谢任何能帮忙的人!

    2 回复  |  直到 10 年前
        1
  •  4
  •   JST    14 年前

    AuthnRequest上的ProtocolBinding属性用于指定IdP在发送SAML响应XML时要使用的预期绑定。HTTP重定向在这里不是一个有效的选项,因为URL querystring上可能有长度限制;SAML响应,尤其是签名的响应,可能相当长。我将引用SAML规范[SAMLProf]:

    …身份提供程序发出一条<响应>消息,由用户代理传递给服务提供程序。可以使用httppost或httpartifact绑定通过用户代理将消息传输到服务提供者。该消息可指示错误或将包括(至少)认证断言。不能使用HTTP重定向绑定,因为响应通常会超过大多数用户代理所允许的URL长度。
        2
  •  0
  •   nhaarman    15 年前

    经过大量的研究,似乎在一个SAML请求中只能声明一个协议绑定。