private void Initialize(SecurityToken token)
{
if (token == null) throw new ArgumentNullException("token");
m_token = token;
UserNameSecurityToken usernameToken = token as UserNameSecurityToken;
if (usernameToken != null)
{
m_displayName = usernameToken.UserName;
m_tokenType = UserTokenType.UserName;
m_issuedTokenType = null;
return;
}
X509SecurityToken x509Token = token as X509SecurityToken;
if (x509Token != null)
{
m_displayName = x509Token.Certificate.Subject;
m_tokenType = UserTokenType.Certificate;
m_issuedTokenType = null;
return;
}
KerberosReceiverSecurityToken kerberosToken1 = token as KerberosReceiverSecurityToken;
if (kerberosToken1 != null)
{
m_displayName = kerberosToken1.WindowsIdentity.Name;
m_tokenType = UserTokenType.IssuedToken;
m_issuedTokenType = new XmlQualifiedName("", "http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1");
return;
}
KerberosRequestorSecurityToken kerberosToken2 = token as KerberosRequestorSecurityToken;
if (kerberosToken2 != null)
{
m_displayName = kerberosToken2.ServicePrincipalName;
m_tokenType = UserTokenType.IssuedToken;
m_issuedTokenType = new XmlQualifiedName("", "http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1");
return;
}
SamlSecurityToken samlToken = token as SamlSecurityToken;
if (samlToken != null)
{
m_displayName = "SAML";
// find the subject of the SAML assertion.
foreach (SamlStatement statement in samlToken.Assertion.Statements)
{
SamlAttributeStatement attribute = statement as SamlAttributeStatement;
if (attribute != null)
{
m_displayName = attribute.SamlSubject.Name;
break;
}
}
m_tokenType = UserTokenType.IssuedToken;
m_issuedTokenType = new XmlQualifiedName("", "urn:oasis:names:tc:SAML:1.0:assertion");
return;
}
m_displayName = UserTokenType.IssuedToken.ToString();
m_tokenType = UserTokenType.IssuedToken;
}