2009-12-07 35 views
4

我实现了一个SAML服务提供商,以支持单点登录的一个ASP.Net Web门户,这是对客户的网站配置了收缩包装的软件,并且必须能够与任何互动SAML兼容的身份提供商。SAML请求 - 声明多个协议绑定

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

据我所知SAML协议,SAML要求ProtocolBinding哪些协议支持用于该响应属性指定。目前,我的请求指定HTTP-Redirect绑定。不过,我想声明我支持HTTP重定向(GET)和HTTP-POST(POST)。在搜索更多的SAML文档之后,我无法重申,我无法找到声明多个支持的协议绑定的语法(或者它是否有效)。

虽然我可以作出这一声明配置,我更倾向于将宣布两个绑定,这样的身份提供会没有我的门户额外的配置工作。

下面是我的身份验证请求的示例。请,如果有人知道一种方法来声明ProtocolBinding的HTTP-Redirect和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> 

在此先感谢任何人可以帮助!

+0

我的猜测是你最终使用了一个不同的值,所以这没关系,但它看起来像在给定的例子中的ProtocolBinding中间有一个小的错字('names.tc' vs'名称:tc')。 – matt 2017-11-30 14:48:48

回答

0

大量的研究后,似乎你只能申报一个协议在一个SAML请求绑定。

4

上AuthnRequest的ProtocolBinding属性用来指定预期结合送他们的SAML响应XML时要由的IdP使用。由于URL查询字符串可能存在长度限制,HTTP-Redirect不是在此使用的有效选项;一个SAML响应,特别是如果它已经签名,可能会很长。我将从SAML规范引用[SAMLProf]:

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