hi,
According to the specification of SAML Token profile 1.1 (http://www.oasis-open.org/committees/download.php/16768/wss-v1.1-spec-os-SAMLTokenProfile.pdf), I listed the difference as follows, some of the points are trivial .
For a SAML Token which is compliant to SAML V1.1:
<saml:Assertion xmlns:saml="..."
AssertionID="_a75adf55-01d7-40cc-929f-dbd8372ebdfc"
IssueInstant="2005-05-27T16:53:33.173Z"
Issuer=”www.opensaml.org”
MajorVersion="1"
MinorVersion="1">
<saml:Conditions
NotBefore="2005-05-27T16:53:33.173Z"
NotOnOrAfter="2005-05-27T16:58:33.17302Z"/>
<saml:AttributeStatement>
<saml:Subject>
<saml:NameIdentifier
NameQualifier="www.example.com"
Format=“urn:oasis:names:tc:SAML:1.1:nameid-
format:X509SubjectName”>
uid=joe,ou=people,ou=saml-demo,o=baltimore.com
</saml:NameIdentifier>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm:holder-of-key
</saml:ConfirmationMethod>
<ds:KeyInfo>
<ds:KeyValue>...</ds:KeyValue>
</ds:KeyInfo>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Attribute
AttributeName="MemberLevel"
AttributeNamespace="http://www.oasis-
open.org/Catalyst2002/attributes">
<saml:AttributeValue>gold</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute
AttributeName="E-mail"
AttributeNamespace="http://www.oasis-open.org/Catalyst2002/attributes">
<saml:AttributeValue>joe@yahoo.com</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
<ds:Signature>...</ds:Signature>
</saml:Assertion>
For a SAML Token which is compliant to SAML V2.0:
<saml2:Assertion xmlns:saml2="..." xmlns:xsi="..."
ID=”_a75adf55-01d7-40cc-929f-dbd8372ebdfc”>
<saml2:Subject>
<saml2:NameID>
...
</saml2:NameID>
<saml2:SubjectConfirmation
Method=”urn:oasis:names:tc:SAML:2.0:cm:holder-of-key”>
<saml2:SubjectConfirmationData
xsi:type="saml2:KeyInfoConfirmationDataType">
<ds:KeyInfo>
<ds:KeyValue>...</ds:KeyValue>
</ds:KeyInfo>
</saml2:SubjectConfirmationData>
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Statement>
...
</saml2:Statement>
<ds:Signature>...</ds:Signature>
</saml2:Assertion>
Suppose voms saml assertion uses SAML V2.0
Some comments:
1. The signature for <saml:Reponse> could also be necessary, even though the integrity is guaranteed by TLS.
2. xml attribute xsi:type="saml2:KeyInfoConfirmationDataType" could be necessary for <saml2:SubjectConfirmationData/>
3. <saml:SubjectConfirmation> element contains a <ds:X509Certificate> element, but it probably be better to just contain a <ds:KeyValue>, since the certificates chain of the "subject" is already supposed to be verified by the third-party authority (in this case, it is voms saml service), and then this public key is used to sign the soap message afterwards. For SOAP message verification on the rely-party side, the rely-party do not need to verify the certificates chain of "subject".
<ds:KeyValue> is also convinient for proxy certificate, in my opinion.
4. Use <saml:Statement> instead of <saml:AttributeStatement>.
Cheers,
Weizhong
Hi Weizhong,
Can you outline why you think the VOMS SAML assertion is not
compatible with the WSS SAML Token Profile?
Thanks,
Tom
PS. The comments quoted below mostly refer to a VOMS SAML assertion
bound to an X.509 proxy certificate (but the requirements are not the
same as a VOMS SAML assertion bound to SOAP header).
On Mon, Mar 30, 2009 at 10:25 AM, weizhong qiang
<weizhongqiang@gmail.com> wrote:
> hi voms folks, all,
> The current voms SAML assertion is not compatible with WS-Security SAML
> Token profile. I would ask is there any plan to change it to make it be
> compatible? I ask this because I think if so, the SAML assertion can be used
> for SOAP message layer authentication, other than just including SAML
> attribute assertion.
>
>
> Thanks
> Weizhong Qiang
>
>
> On Tue, Feb 10, 2009 at 5:21 AM, Tom Scavo <trscavo@gmail.com> wrote:
>>
>> Thanks to Benjamin for posting this VOMS-SAML response to gt-user. A
>> critique (of the SAML, not Benjamin :) follows.
>>
>> - Note that the output is a <samlp:Response> element, not a
>> <saml:Assertion> element. This is wrong. The requester must consume
>> the response. Not sure why this isn't happening.
>>
>> - The value of the <saml:Issuer> element in the response is a DN but
>> the Format XML attribute is missing. This is a bug. The default
>> Format is "unspecified" but clearly this is not.
>>
>> - Second-level status codes are desirable so they can be echoed on the
>> command line (if any).
>>
>> - Same comment about the <saml:Issuer> element in the assertion.
>>
>> - The use of SAML metadata requires that the Format on the
>> <saml:Issuer> element be "entity" but clearly it is not. Thus the use
>> of SAML metadata by the relying party is precluded.
>>
>> - Don't know if Shibboleth/OpenSAML can verify the signature (which is
>> tricky business). This is a future experiment that needs to be done.
>>
>> - The <saml:SubjectConfirmation> element contains a
>> <ds:X509Certificate> element, which precludes the binding of this
>> holder-of-key assertion to a proxy certificate. This is a bug. Use a
>> <ds:X509SubjectName> element instead (which causes the NameID itself
>> to be redundant).
>>
>> - If the assertion is bound to a proxy certificate, the NotBefore and
>> NotOnOrAfter attributes are redundant and superfluous. In fact, they
>> may be wrong since they must agree with the NotBefore and NotOnOrAfter
>> fields of the proxy.
>>
>> - Since the client authenticated directly to the server, a
>> <saml:AuthnStatement> is desirable (not required, but potentially
>> useful at the relying party).
>>
>> - The NameFormat XML attribute on the <saml:Attribute> element should
>> be "uri" not "unspecified".
>>
>> - The "xsi:" prefix on the <saml:AttributeValue> element is undefined.
>> This is a bug.
>>
>> - The <saml:AttributeValue> elements do not conform to the XACML
>> Attribute Profile (actually, I don't think the attributes conform to
>> *any* SAML V2.0 attribute profile).
>>
>> Hope this helps,
>> Tom
>>
>> ---------- Forwarded message ----------
>> From: Benjamin Henne <henne@rvs.uni-hannover.de>
>> Date: Wed, Feb 4, 2009 at 1:59 AM
>> Subject: Re: [gt-user] SAML based VOMS Server
>> To: Tom Scavo <trscavo@gmail.com>
>> Cc: GT User <gt-user@globus.org>
>>
>>
>> <Response xmlns="urn:oasis:names:tc:SAML:2.0:protocol"
>> xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
>> ID="_d01d46b7-d16a-4ae8-b9bb-beb8844838b6"
>> InResponseTo="_qwertyuiopasdfghjklzxcvbn"
>> IssueInstant="2008-10-16T19:03:57.922Z" Version="2.0">
>> <saml:Issuer
>> xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">CN=voms3.gridlab.uni-hannover.de,OU=UniHannover,O=GermanGrid,C=DE</saml:Issuer>
>> <Status>
>> <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
>> </Status>
>> <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
>> ID="_81b685e5-4650-4ba9-b1c6-0ed957cc33ac"
>> IssueInstant="2008-10-16T19:03:57.920Z" Version="2.0">
>>
>> <saml:Issuer>CN=voms3.gridlab.uni-hannover.de,OU=UniHannover,O=GermanGrid,C=DE</saml:Issuer>
>> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
>> <ds:SignedInfo>
>> <ds:CanonicalizationMethod
>> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
>> <ds:SignatureMethod
>> Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
>> <ds:Reference URI="#_81b685e5-4650-4ba9-b1c6-0ed957cc33ac">
>> <ds:Transforms>
>> <ds:Transform
>> Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
>> <ds:Transform
>> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces
>> xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ds saml
>> xs"/></ds:Transform>
>> </ds:Transforms>
>> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
>> <ds:DigestValue>j55K/cn8GQNuTQ52Kr3r0NGRJ0w=</ds:DigestValue>
>> </ds:Reference>
>> </ds:SignedInfo>
>> <ds:SignatureValue>
>> ...
>> </ds:SignatureValue>
>>
>> <ds:KeyInfo><ds:X509Data><ds:X509Certificate>...</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature>
>> <saml:Subject>
>> <saml:NameID
>>
>> Format="urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName">CN=Benjamin
>> Henne,OU=UniHannover,O=GermanGrid,C=DE</saml:NameID>
>> <saml:SubjectConfirmation
>> Method="urn:oasis:names:tc:SAML:2.0:cm:holder-of-key">
>> <saml:SubjectConfirmationData>
>> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
>> <ds:X509Data>
>> <ds:X509Certificate>...</ds:X509Certificate>
>> </ds:X509Data>
>> </ds:KeyInfo>
>> </saml:SubjectConfirmationData>
>> </saml:SubjectConfirmation>
>> </saml:Subject>
>> <saml:Conditions NotBefore="2008-10-16T19:03:57.920Z"
>> NotOnOrAfter="2008-10-17T06:03:57.920Z"/>
>> <saml:AttributeStatement>
>> <saml:Attribute Name="http://voms.forge.cnaf.infn.it/roles"
>> NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
>> <saml:AttributeValue
>> xmlns:xs="http://www.w3.org/2001/XMLSchema"
>> xsi:type="xs:string">VO-Admin@/RVS</saml:AttributeValue>
>> <saml:AttributeValue
>> xmlns:xs="http://www.w3.org/2001/XMLSchema"
>> xsi:type="xs:string">resass@/RVS/education</saml:AttributeValue>
>> <saml:AttributeValue
>> xmlns:xs="http://www.w3.org/2001/XMLSchema"
>> xsi:type="xs:string">staff@/RVS/research/SAML</saml:AttributeValue>
>> </saml:Attribute>
>> <saml:Attribute Name="nationality"
>> NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
>> <saml:AttributeValue
>> xmlns:xs="http://www.w3.org/2001/XMLSchema"
>> xsi:type="xs:string">German</saml:AttributeValue>
>> </saml:Attribute>
>> <saml:Attribute Name="http://voms.forge.cnaf.infn.it/group"
>> NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
>> <saml:AttributeValue
>> xmlns:xs="http://www.w3.org/2001/XMLSchema"
>> xsi:type="xs:string">/RVS/education</saml:AttributeValue>
>> <saml:AttributeValue
>> xmlns:xs="http://www.w3.org/2001/XMLSchema"
>> xsi:type="xs:string">/RVS</saml:AttributeValue>
>> <saml:AttributeValue
>> xmlns:xs="http://www.w3.org/2001/XMLSchema"
>> xsi:type="xs:string">/RVS/research</saml:AttributeValue>
>> </saml:Attribute>
>> </saml:AttributeStatement>
>> </saml:Assertion>
>> </Response>
>
>