SAML2.0入门

时间:2010-08-20 21:01:28

标签: c# saml

我正在尝试使用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>

非常感谢任何帮助,

感谢。

2 个答案:

答案 0 :(得分:3)

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

您使用的是哪个SAML2框架,还是您自己推出?如果您正在使用自己的SAML2框架,我建议使用OphiAML.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

答案 1 :(得分:0)

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