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

Binding SAML请求-声明多个协议绑定,binding,protocols,saml,Binding,Protocols,Saml,我已经实现了一个SAML服务提供商来支持ASP.Net web门户的单点登录,这是一个在客户端站点上配置的收缩包装软件,必须能够与任何符合SAML的身份提供商交互 我的断言消费者服务(ACS)页面将通过GET和POST方法接受SAML响应 根据我对SAML协议的理解,SAML请求ProtocolBinding属性指定响应支持哪些协议。目前,我的请求指定HTTP重定向绑定。但是,我想声明我同时支持HTTP重定向(GET)和HTTP-POST(POST)。在搜索了比我想重申的更多的SAML文档之后,

我已经实现了一个SAML服务提供商来支持ASP.Net web门户的单点登录,这是一个在客户端站点上配置的收缩包装软件,必须能够与任何符合SAML的身份提供商交互

我的断言消费者服务(ACS)页面将通过GET和POST方法接受SAML响应

根据我对SAML协议的理解,SAML请求ProtocolBinding属性指定响应支持哪些协议。目前,我的请求指定HTTP重定向绑定。但是,我想声明我同时支持HTTP重定向(GET)和HTTP-POST(POST)。在搜索了比我想重申的更多的SAML文档之后,我无法找到声明多个受支持的协议绑定的语法(或者这样做是否有效)

虽然我可以将此声明设置为可配置的,但我的首选是声明这两个绑定,以便标识提供程序可以在不需要额外配置门户的情况下工作

下面是我的身份验证请求示例。如果有人知道如何为ProtocolBinding声明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>

PortalEntityID

提前感谢任何能提供帮助的人

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

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

…身份提供程序向服务提供程序发出一条由用户代理传递的消息。HTTP POST或HTTP工件绑定可用于通过用户代理将消息传输到服务提供商。该消息可指示错误或将包括(至少)认证断言。不能使用HTTP重定向绑定,因为响应通常会超过大多数用户代理所允许的URL长度。
我猜你最终使用了一个不同的值,所以这并不重要,但是在给定的例子中,在协议绑定中间有一个小的打印错误(<代码> No.TC < /Cord> VS <代码>名称:TC )。