4

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

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

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

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

4

2 回答 2

4

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

...身份提供者发出 <Response> 消息,由用户代理传递给服务提供者。HTTP POST 或 HTTP Artifact 绑定都可用于通过用户代理将消息传输到服务提供者。该消息可能指示错误或将包括(至少)身份验证断言。不得使用 HTTP 重定向绑定,因为响应通常会超过大多数用户代理允许的 URL 长度。
于 2010-02-10T19:57:19.233 回答
0

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

于 2009-12-09T14:34:40.647 回答