HTTP重定向绑定SAML请求

时间:2015-05-22 05:24:56

标签: single-sign-on x509certificate saml-2.0

假设执行了SP-init SSO,则使用HTTP-Redirect Binding而不是HTTP-POST绑定,并且需要签名的AuthnRequest。这意味着在URL中包含SAMLRequest。

Q1。我是否需要在URL中包含签名或仅嵌入SAMLRequest?

重定向网址为

http://idp.example.com/SSOService.php?SAMLRequest= {VAL1}&安培;签名= {VAL2}&安培; SigAlg = {} VAL3

使用我的SAMLRequest(无签名)

    self.view.endEditing(true )

http://idp.example.com/SSOService.php?SAMLRequest= {VAL1}

使用我的SAMLRequest(嵌入签名)

<samlp:AuthnRequest ID="" Version="2.0" IssueInstant="2015-05-22T02:47:38Z" Destination="" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL="" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"></saml:Issuer>
    <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" AllowCreate="true" />
    <samlp:RequestedAuthnContext Comparison="exact" />
    <saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
</samlp:AuthnRequest>

Q2。将base64和url编码为url参数的值是否正确?

Q3。 X509证书包含在我的SP元数据中,是否为base64编码?

我有证书的cert.pem文件,我是否需要将其编码为base64编码或直接包含证书。

<samlp:AuthnRequest ID="" Version="2.0" IssueInstant="2015-05-22T02:47:38Z" Destination="" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL="" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"></saml:Issuer>
    <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" AllowCreate="true" />
    <samlp:RequestedAuthnContext Comparison="exact" />
    <saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
    <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="">
                <Transforms>
                    <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                </Transforms>
                <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
                <DigestValue>v5h...</DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue>M4...</SignatureValue>
    </Signature>
</samlp:AuthnRequest>

SPMetadata.xml

-----BEGIN CERTIFICATE-----
MII...
-----END CERTIFICATE-----

1 个答案:

答案 0 :(得分:3)

A1:使用重定向绑定时,您将签名放在URL查询参数

A2:所有网址查询参数都应该进行网址编码,只需要压缩SAML请求并进行base64编码。

A3:使用PEM格式,因为它已经是base64编码但是省略了开始和结束分隔符(---- BEGIN--和---- END CERT ...)