Export (0) Print
Expand All

WSSecurityTokenSerializer Class

The class used for serializing and deserializing security tokens, security key identifiers, and security key identifier clauses defined in the WS-Security, WS-Trust, and WS-SecureConversation security specifications.

System.Object
  System.IdentityModel.Selectors.SecurityTokenSerializer
    System.ServiceModel.Security.WSSecurityTokenSerializer

Namespace:  System.ServiceModel.Security
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public class WSSecurityTokenSerializer : SecurityTokenSerializer

The WSSecurityTokenSerializer type exposes the following members.

  NameDescription
Public methodWSSecurityTokenSerializer()Initializes a new instance of the WSSecurityTokenSerializer class.
Public methodWSSecurityTokenSerializer(Boolean)Initializes a new instance of the WSSecurityTokenSerializer class.
Public methodWSSecurityTokenSerializer(SecurityVersion)Initializes a new instance of the WSSecurityTokenSerializer class.
Public methodWSSecurityTokenSerializer(SecurityVersion, Boolean)Initializes a new instance of the WSSecurityTokenSerializer class.
Public methodWSSecurityTokenSerializer(SecurityVersion, Boolean, SamlSerializer)Initializes a new instance of the WSSecurityTokenSerializer class.
Public methodWSSecurityTokenSerializer(SecurityVersion, Boolean, SamlSerializer, SecurityStateEncoder, IEnumerable<Type>)Initializes a new instance of the WSSecurityTokenSerializer class.
Public methodWSSecurityTokenSerializer(SecurityVersion, TrustVersion, SecureConversationVersion, Boolean, SamlSerializer, SecurityStateEncoder, IEnumerable<Type>)Initializes a new instance of the WSSecurityTokenSerializer class.
Public methodWSSecurityTokenSerializer(SecurityVersion, Boolean, SamlSerializer, SecurityStateEncoder, IEnumerable<Type>, Int32, Int32, Int32)Initializes a new instance of the WSSecurityTokenSerializer class.
Public methodWSSecurityTokenSerializer(SecurityVersion, TrustVersion, SecureConversationVersion, Boolean, SamlSerializer, SecurityStateEncoder, IEnumerable<Type>, Int32, Int32, Int32)Initializes a new instance of the WSSecurityTokenSerializer class.
Top

  NameDescription
Public propertyStatic memberDefaultInstanceGets a default instance of this class.
Public propertyEmitBspRequiredAttributesGets a value that indicates whether to emit BSP required attributes.
Public propertyMaximumKeyDerivationLabelLengthGets the maximum key derivation label length.
Public propertyMaximumKeyDerivationNonceLengthGets the maximum key derivation nonce length.
Public propertyMaximumKeyDerivationOffsetGets the maximum key derivation offset.
Public propertySecurityVersionGets the security version.
Top

  NameDescription
Public methodCanReadKeyIdentifierDetermines whether this serializer can read the <KeyIdentifier> element referred to by the specified XML reader. (Inherited from SecurityTokenSerializer.)
Public methodCanReadKeyIdentifierClauseDetermines whether this serializer can read a clause in a <KeyIdentifier> element referred to by the specified XML reader. (Inherited from SecurityTokenSerializer.)
Protected methodCanReadKeyIdentifierClauseCoreGets a value that indicates whether the key identifier clause core can be read using the specified reader. (Overrides SecurityTokenSerializer.CanReadKeyIdentifierClauseCore(XmlReader).)
Protected methodCanReadKeyIdentifierCoreGets a value that indicates whether the key identifier core can be read using the specified reader. (Overrides SecurityTokenSerializer.CanReadKeyIdentifierCore(XmlReader).)
Public methodCanReadTokenDetermines whether this serializer can read the security token pointed at by the specified XML reader. (Inherited from SecurityTokenSerializer.)
Protected methodCanReadTokenCoreGets a value that indicates whether the token core can be read using the specified reader. (Overrides SecurityTokenSerializer.CanReadTokenCore(XmlReader).)
Public methodCanWriteKeyIdentifierDetermines whether this serializer can write the specified key identifier. (Inherited from SecurityTokenSerializer.)
Public methodCanWriteKeyIdentifierClauseDetermines whether this serializer can write the specified key identifier clause. (Inherited from SecurityTokenSerializer.)
Protected methodCanWriteKeyIdentifierClauseCoreGets a value that indicates whether the key identifier clause core with a specified key identifier clause can be written. (Overrides SecurityTokenSerializer.CanWriteKeyIdentifierClauseCore(SecurityKeyIdentifierClause).)
Protected methodCanWriteKeyIdentifierCoreGets a value that indicates whether the key identifier core with a specified key identifier clause can be written. (Overrides SecurityTokenSerializer.CanWriteKeyIdentifierCore(SecurityKeyIdentifier).)
Public methodCanWriteTokenDetermines whether this serializer can write the specified security token to XML. (Inherited from SecurityTokenSerializer.)
Protected methodCanWriteTokenCoreGets a value that indicates whether the token core with a specified security token can be written. (Overrides SecurityTokenSerializer.CanWriteTokenCore(SecurityToken).)
Public methodCreateKeyIdentifierClauseFromTokenXmlCreates a key identifier clause from a token expressed as XML.
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Protected methodGetTokenTypeUriGets the URI of the security token of the specified type.
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodReadKeyIdentifierReads the key identifier using specified XML reader. (Inherited from SecurityTokenSerializer.)
Public methodReadKeyIdentifierClauseReads the key identifier clause using specified XML reader. (Inherited from SecurityTokenSerializer.)
Protected methodReadKeyIdentifierClauseCoreReads the key identifier clause core using the specified XmlReader. (Overrides SecurityTokenSerializer.ReadKeyIdentifierClauseCore(XmlReader).)
Protected methodReadKeyIdentifierCoreReads the key identifier core using the specified XmlReader. (Overrides SecurityTokenSerializer.ReadKeyIdentifierCore(XmlReader).)
Public methodReadTokenReads the security token pointed at by the specified XML reader. (Inherited from SecurityTokenSerializer.)
Protected methodReadTokenCoreReads the token core using the specified XmlReader. (Overrides SecurityTokenSerializer.ReadTokenCore(XmlReader, SecurityTokenResolver).)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Public methodTryCreateKeyIdentifierClauseFromTokenXmlAttempts to create a key identifier clause from a token expressed as XML.
Public methodWriteKeyIdentifierWrites the specified key identifier using the specified XML writer. (Inherited from SecurityTokenSerializer.)
Public methodWriteKeyIdentifierClauseWrites the specified key identifier clause using the specified XML writer. (Inherited from SecurityTokenSerializer.)
Protected methodWriteKeyIdentifierClauseCoreWrites the key identifier clause core with a specified key identifier clause using the specified XmlWriter. (Overrides SecurityTokenSerializer.WriteKeyIdentifierClauseCore(XmlWriter, SecurityKeyIdentifierClause).)
Protected methodWriteKeyIdentifierCoreWrites the key identifier core with a specified key identifier clause using the specified XmlWriter. (Overrides SecurityTokenSerializer.WriteKeyIdentifierCore(XmlWriter, SecurityKeyIdentifier).)
Public methodWriteTokenWrites the specified security token using the specified XML writer. (Inherited from SecurityTokenSerializer.)
Protected methodWriteTokenCoreWrites the token core with a specified security token using the specified XmlWriter. (Overrides SecurityTokenSerializer.WriteTokenCore(XmlWriter, SecurityToken).)
Top

The following code demonstrates a custom override of this class.

public class CreditCardSecurityTokenSerializer : WSSecurityTokenSerializer
{
    public CreditCardSecurityTokenSerializer(SecurityTokenVersion version) : base() { }

    protected override bool CanReadTokenCore(XmlReader reader)
    {
        XmlDictionaryReader localReader = XmlDictionaryReader.CreateDictionaryReader(reader);
        if (reader == null)
        {
            throw new ArgumentNullException("reader");
        }
        if (reader.IsStartElement(Constants.CreditCardTokenName, Constants.CreditCardTokenNamespace))
        {
            return true;
        }
        return base.CanReadTokenCore(reader);
    }

    protected override SecurityToken ReadTokenCore(XmlReader reader, SecurityTokenResolver tokenResolver)
    {
        if (reader == null)
        {
            throw new ArgumentNullException("reader");
        }
        if (reader.IsStartElement(Constants.CreditCardTokenName, Constants.CreditCardTokenNamespace))
        {
            string id = reader.GetAttribute(Constants.Id, Constants.WsUtilityNamespace);

            reader.ReadStartElement();

            // Read the credit card number. 
            string creditCardNumber = reader.ReadElementString(Constants.CreditCardNumberElementName, Constants.CreditCardTokenNamespace);

            // Read the expiration date. 
            string expirationTimeString = reader.ReadElementString(Constants.CreditCardExpirationElementName, Constants.CreditCardTokenNamespace);
            DateTime expirationTime = XmlConvert.ToDateTime(expirationTimeString, XmlDateTimeSerializationMode.Utc);

            // Read the issuer of the credit card. 
            string creditCardIssuer = reader.ReadElementString(Constants.CreditCardIssuerElementName, Constants.CreditCardTokenNamespace);
            reader.ReadEndElement();

            CreditCardInfo cardInfo = new CreditCardInfo(creditCardNumber, creditCardIssuer, expirationTime);

            return new CreditCardToken(cardInfo, id);
        }
        else
        {
            return WSSecurityTokenSerializer.DefaultInstance.ReadToken(reader, tokenResolver);
        }
    }

    protected override bool CanWriteTokenCore(SecurityToken token)
    {
        if (token is CreditCardToken)
        {
            return true;
        }
        else
        {
            return base.CanWriteTokenCore(token);
        }
    }

    protected override void WriteTokenCore(XmlWriter writer, SecurityToken token)
    {
        if (writer == null) 
        { 
            throw new ArgumentNullException("writer"); 
        }
        if (token == null) 
        { 
            throw new ArgumentNullException("token"); 
        }

        CreditCardToken c = token as CreditCardToken;
        if (c != null)
        {
            writer.WriteStartElement(Constants.CreditCardTokenPrefix, Constants.CreditCardTokenName, Constants.CreditCardTokenNamespace);
            writer.WriteAttributeString(Constants.WsUtilityPrefix, Constants.Id, Constants.WsUtilityNamespace, token.Id);
            writer.WriteElementString(Constants.CreditCardNumberElementName, Constants.CreditCardTokenNamespace, c.CardInfo.CardNumber);
            writer.WriteElementString(Constants.CreditCardExpirationElementName, Constants.CreditCardTokenNamespace, XmlConvert.ToString(c.CardInfo.ExpirationDate, XmlDateTimeSerializationMode.Utc));
            writer.WriteElementString(Constants.CreditCardIssuerElementName, Constants.CreditCardTokenNamespace, c.CardInfo.CardIssuer);
            writer.WriteEndElement();
            writer.Flush();
        }
        else
        {
            base.WriteTokenCore(writer, token);
        }
    }
}

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft