Configuring SAML Assertion Subject Name and Format for a WIF STS
In some interop scenarios, subject name and its format needs to be included in the Saml token/assertion generated by the STS. You can easily configure a WIF based STS to generate this by adding a NameIdentifier claim and by settings it’s format property.
protected override IClaimsIdentity GetOutputClaimsIdentity(IClaimsPrincipal principal,
RequestSecurityToken request, Scope scope)
{
var nameIdentifierClaim = new Claim(ClaimTypes.NameIdentifier, "me@zamd.com");
nameIdentifierClaim.Properties[ClaimProperties.SamlNameIdentifierFormat] = "EMAIL";
return new ClaimsIdentity(
new Claim[]
{
new Claim(System.IdentityModel.Claims.ClaimTypes.Name, "Zulfiqar"),
nameIdentifierClaim
});
This generates following Saml Assertion where you can see the generated NameIdentifier & format attribute.
<saml:AttributeStatement
xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">
<saml:Subject>
<saml:NameIdentifier Format="EMAIL">
me@zamd.com
</saml:NameIdentifier>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm:bearer
</saml:ConfirmationMethod>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Attribute AttributeName="name" AttributeNamespace=
"https://schemas.xmlsoap.org/ws/2005/05/identity/claims">
<saml:AttributeValue>Zulfiqar</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
Originally posted by Zulfiqar Ahmed on 27 April 2010 here https://zuahmed.wordpress.com/2010/04/27/configuring-saml-assertion-subject-name-and-format-for-a-wif-sts/