0

我正在尝试使用 SAML 2.0 进行我的第一个 SSO 集成。我一直在使用:

http://www.codeproject.com/KB/aspnet/DotNetSamlPost.aspx?msg=3562384

作为我自己的一个例子。

目前我只是想成功地发布到他们的网址。我们连接的站点非常大,并且使用 ping-identity 的解决方案来管理他们的 sso,这通常似乎给我带来的错误并不多。我已经完成了一些工作,但这个让我很难过:

UnknownBindingException:请求包含的信息不足,无法确定协议绑定(您是否直接在浏览器的地址栏中键入了协议端点 URL?)。

有谁知道可能导致这种情况的原因,我发布的 saml 如下所示:

<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="_3b052151-fb4f-4e10-89bd-d65ef5141e9d" Version="2.0" IssueInstant="2010-08-20T20:36:02.8093696Z" Destination="https://******/sp/ACS.saml2" xmlns="urn:oasis:names:tc:SAML:2.0:protocol">
  <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">www.******.org</Issuer>
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
      <Reference URI="#_3b052151-fb4f-4e10-89bd-d65ef5141e9d">
        <Transforms>
          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
          <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
        <DigestValue>****</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>*******</SignatureValue>
  </Signature>
  <Status>
    <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
  </Status>
  <Assertion Version="2.0" ID="_d0f34b54-cf0b-49c7-9a50-f60842b7e0d2" IssueInstant="2010-08-20T20:36:02.8103697Z" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
    <Issuer>www.*******.org</Issuer>
    <Subject>
      <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">adamb</NameID>
      <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
        <SubjectConfirmationData NotOnOrAfter="2010-08-20T20:41:02.8103697Z" Recipient="https://*****.com:9031/sp/ACS.saml2" />
      </SubjectConfirmation>
    </Subject>
    <Conditions NotBefore="2010-08-20T20:36:02.8103697Z" NotOnOrAfter="2010-08-20T20:41:02.8103697Z">
      <AudienceRestriction>
        <Audience>*****</Audience>
      </AudienceRestriction>
    </Conditions>
    <AuthnStatement AuthnInstant="2010-08-20T20:36:02.8103697Z">
      <AuthnContext>
     <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</AuthnContextClassRef>
      </AuthnContext>
    </AuthnStatement>
  </Assertion>
</Response>

任何帮助深表感谢,

谢谢。

4

2 回答 2

3

当我阅读您的问题时,您的应用程序将成为 SAML2 联合中的服务提供者(SP),其中 Ping 是身份提供者(IdP)。你已经标记了问题c#,所以我假设你的SP是在.Net中实现的

您正在使用哪个 SAML2 框架,或者您正在使用自己的框架?如果您正在开发自己的 SAML2 框架,我建议您使用 OIOSAML.net,它是 Mozilla 许可证下的开源软件(可免费用于任何目的)。您可以在此处查看源代码:http: //view.svn.softwareborsen.dk/cgi-bin/index.cgi/Softwareborsen/oiosaml.net/branches/ (所有文档均为英文)。

它由丹麦政府积极维护,并已通过 Ping、ADFSv2、SimpleSamlPhp 和许多其他 SAML2 IdP 的互操作测试。它目前被数百个丹麦网站与 Ping 作为 IdP 联合使用。

关于您收到的异常,您打算使用哪个绑定:HTTP 重定向,还是其他?假设它是 HTTP 重定向,我建议阅读 SAML2 绑定规范中从 p15 开始的相关部分:http: //docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf

于 2010-09-01T11:34:48.513 回答
0

听起来您是 A)通过 GET 方法而不是 POST 发送断言或 B)您没有正确格式化包含要发送给您的合作伙伴的断言的 HTML 表单。

于 2010-08-23T12:03:04.030 回答