SAML请求 - 声明多协议绑定

时间:2009-12-07 22:45:58

标签: binding protocols saml

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

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

据我了解SAML协议,SAML请求 ProtocolBinding 属性指定响应支持哪些协议。目前,我的请求指定HTTP-Redirect绑定。但是,我想声明我支持 HTTP-Redirect (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>

提前感谢任何可以提供帮助的人!

2 个答案:

答案 0 :(得分:4)

AuthnRequest上的ProtocolBinding属性用于指定IdP在发送其SAML响应XML时要使用的预期绑定。 HTTP-Redirect不是此处使用的有效选项,因为URL查询字符串可能存在长度限制; SAML响应,特别是如果它已签名,可能会非常冗长。我将引用SAML规范[SAMLProf]:

...身份提供者发出&lt; Response&gt;消息由用户代理传递给服务提供者。 HTTP POST或HTTP Artifact绑定可用于通过用户代理将消息传输到服务提供者。该消息可以指示错误或将包括(至少)认证断言。绝不能使用HTTP重定向绑定,因为响应通常会超过大多数用户代理允许的URL长度。

答案 1 :(得分:0)

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