The Shibboleth V1 software has reached its End of Life and is no longer supported. This documentation is available for historical purposes only.
SubjectConfirmation
SubjectConfirmation
was an obscure feature of SAMLÂ 1.x that wasn't very well understood. The schema itself was incorrect in a number of areas, which limited its usefulness, and so in SAMLÂ 2.0, the schema was reworked and the concept was expanded and clarified.
In practical terms, what SubjectConfirmation
says is "these are the conditions under which an attesting entity (somebody trying to use the assertion) is permitted to do so". The "wielder" is attesting to its right to use the assertion, usually by implying a relationship with the subject. An assertion can have any number of SubjectConfirmation
elements, but an attesting entity only has to satisfy one of them.
In SAML, the SubjectConfirmation
element is a child of the Subject
element. The following is an example of a SAMLÂ 1.x Subject
element:
<!-- SAML 1.x Subject with SubjectConfirmation --> <Subject> <NameIdentifier Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"> user@example.org </NameIdentifier> <SubjectConfirmation> <ConfirmationMethod> urn:oasis:names:tc:SAML:1.0:cm:bearer </ConfirmationMethod> </SubjectConfirmation> </Subject>
In SAMLÂ 2.0, an equivalent Subject
element is formulated as follows:
<!-- SAML 2.0 Subject with SubjectConfirmation --> <Subject> <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"> user@example.org </NameID> <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"/> </Subject>
Note that the ConfirmationMethod
element in SAMLÂ 1.x has given way to the SAMLÂ 2.0 Method
attribute. Another difference is that the SubjectConfirmation
element in SAMLÂ 2.0 may itself contain NameID
elements (which is useful in more complex scenarios such as MetaSearch).
Confirmation Method Identifiers
SAMLÂ 1.x defines four subject confirmation method identifiers:
urn:oasis:names:tc:SAML:1.0:cm:holder-of-key urn:oasis:names:tc:SAML:1.0:cm:sender-vouches urn:oasis:names:tc:SAML:1.0:cm:artifact urn:oasis:names:tc:SAML:1.0:cm:bearer
The artifact
and bearer
identifiers MUST be used in the SAMLÂ 1.x Browser/Artifact and Browser/POST profiles, respectively.
SAMLÂ 2.0 redefines three of the four SAMLÂ 1.x confirmation method identifiers:
urn:oasis:names:tc:SAML:2.0:cm:holder-of-key urn:oasis:names:tc:SAML:2.0:cm:sender-vouches urn:oasis:names:tc:SAML:2.0:cm:bearer
The artifact
confirmation method identifier was dropped since the browser profiles were consolidated in SAMLÂ 2.0. The bearer
identifier MUST be used in the SAMLÂ 2.0 SSO Profile, regardless of binding.
Holder of Key
SubjectConfirmation
attaches specific security technologies and constraints to an assertion such that it becomes not only a stand-alone package of information but also a SecurityToken. That is, an entity can use it to prove something about itself to a relying party in order to accomplish some task.
An example illustrates this. Imagine an X.509 certificate. The certificate combined with the private key is a security token. A client can prove ownership of the key, and by attaching the certificate, the relying party can accept the claims inside the certificate if it trusts the issuer.
By itself, a SAML assertion resembles a certificate, but it lacks the key material. The client can't do anything to prove its right to use the assertion. SubjectConfirmation
can be used to extend the SAML assertion into the security-specific domain of public key cryptography. By embedding a public key inside a HolderOfKey SubjectConfirmation
, the issuer enables a client that can prove ownership of the key to use the assertion, while nobody else can do so. This doesn't turn the assertion into a certificate, but it connects a particular security layer (public key crypto) with SAML, resulting in a SecurityToken.
Note that the security layer could be "null", as in the case of a BearerSubjectConfirmation. This grants anybody holding the assertion the ability to use it (subject to other constraints). Thus, any assertion can be turned into a weak SecurityToken by including a BearerSubjectConfirmation.
%COMMENT%