WSSecurityTokenSerializer Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
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.
public ref class WSSecurityTokenSerializer : System::IdentityModel::Selectors::SecurityTokenSerializer
public class WSSecurityTokenSerializer : System.IdentityModel.Selectors.SecurityTokenSerializer
type WSSecurityTokenSerializer = class
inherit SecurityTokenSerializer
Public Class WSSecurityTokenSerializer
Inherits SecurityTokenSerializer
- Inheritance
Examples
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);
}
}
}
Public Class CreditCardSecurityTokenSerializer
Inherits WSSecurityTokenSerializer
Public Sub New(ByVal version As SecurityTokenVersion)
MyBase.New()
End Sub
Protected Overrides Function CanReadTokenCore(ByVal reader As XmlReader) As Boolean
Dim localReader = XmlDictionaryReader.CreateDictionaryReader(reader)
If reader Is Nothing Then
Throw New ArgumentNullException("reader")
End If
If reader.IsStartElement(Constants.CreditCardTokenName, _
Constants.CreditCardTokenNamespace) Then
Return True
End If
Return MyBase.CanReadTokenCore(reader)
End Function
Protected Overrides Function ReadTokenCore(ByVal reader As XmlReader, _
ByVal tokenResolver As SecurityTokenResolver) As SecurityToken
If reader Is Nothing Then
Throw New ArgumentNullException("reader")
End If
If reader.IsStartElement(Constants.CreditCardTokenName, _
Constants.CreditCardTokenNamespace) Then
Dim id = reader.GetAttribute(Constants.Id, _
Constants.WsUtilityNamespace)
reader.ReadStartElement()
' Read the credit card number.
Dim creditCardNumber = reader.ReadElementString(Constants.CreditCardNumberElementName, _
Constants.CreditCardTokenNamespace)
' Read the expiration date.
Dim expirationTimeString = reader.ReadElementString(Constants.CreditCardExpirationElementName, _
Constants.CreditCardTokenNamespace)
Dim expirationTime As DateTime = XmlConvert.ToDateTime(expirationTimeString, _
XmlDateTimeSerializationMode.Utc)
' Read the issuer of the credit card.
Dim creditCardIssuer = reader.ReadElementString(Constants.CreditCardIssuerElementName, _
Constants.CreditCardTokenNamespace)
reader.ReadEndElement()
Dim cardInfo As New CreditCardInfo(creditCardNumber, _
creditCardIssuer, _
expirationTime)
Return New CreditCardToken(cardInfo, id)
Else
Return WSSecurityTokenSerializer.DefaultInstance.ReadToken(reader, _
tokenResolver)
End If
End Function
Protected Overrides Function CanWriteTokenCore(ByVal token As SecurityToken) As Boolean
If TypeOf token Is CreditCardToken Then
Return True
Else
Return MyBase.CanWriteTokenCore(token)
End If
End Function
Protected Overrides Sub WriteTokenCore(ByVal writer As XmlWriter, _
ByVal token As SecurityToken)
If writer Is Nothing Then
Throw New ArgumentNullException("writer")
End If
If token Is Nothing Then
Throw New ArgumentNullException("token")
End If
Dim c = TryCast(token, CreditCardToken)
If c IsNot Nothing Then
With writer
.WriteStartElement(Constants.CreditCardTokenPrefix, _
Constants.CreditCardTokenName, _
Constants.CreditCardTokenNamespace)
.WriteAttributeString(Constants.WsUtilityPrefix, _
Constants.Id, _
Constants.WsUtilityNamespace, _
token.Id)
.WriteElementString(Constants.CreditCardNumberElementName, _
Constants.CreditCardTokenNamespace, _
c.CardInfo.CardNumber)
.WriteElementString(Constants.CreditCardExpirationElementName, _
Constants.CreditCardTokenNamespace, _
XmlConvert.ToString(c.CardInfo.ExpirationDate, _
XmlDateTimeSerializationMode.Utc))
.WriteElementString(Constants.CreditCardIssuerElementName, _
Constants.CreditCardTokenNamespace, _
c.CardInfo.CardIssuer)
.WriteEndElement()
.Flush()
End With
Else
MyBase.WriteTokenCore(writer, token)
End If
End Sub
End Class
Constructors
Properties
DefaultInstance |
Gets a default instance of this class. |
EmitBspRequiredAttributes |
Gets a value that indicates whether to emit BSP required attributes. |
MaximumKeyDerivationLabelLength |
Gets the maximum key derivation label length. |
MaximumKeyDerivationNonceLength |
Gets the maximum key derivation nonce length. |
MaximumKeyDerivationOffset |
Gets the maximum key derivation offset. |
SecurityVersion |
Gets the security version. |
Methods
CanReadKeyIdentifier(XmlReader) |
Determines whether this serializer can read the |
CanReadKeyIdentifierClause(XmlReader) |
Determines whether this serializer can read a clause in a |
CanReadKeyIdentifierClauseCore(XmlReader) |
Gets a value that indicates whether the key identifier clause core can be read using the specified reader. |
CanReadKeyIdentifierCore(XmlReader) |
Gets a value that indicates whether the key identifier core can be read using the specified reader. |
CanReadToken(XmlReader) |
Determines whether this serializer can read the security token pointed at by the specified XML reader. (Inherited from SecurityTokenSerializer) |
CanReadTokenCore(XmlReader) |
Gets a value that indicates whether the token core can be read using the specified reader. |
CanWriteKeyIdentifier(SecurityKeyIdentifier) |
Determines whether this serializer can write the specified key identifier. (Inherited from SecurityTokenSerializer) |
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause) |
Determines whether this serializer can write the specified key identifier clause. (Inherited from SecurityTokenSerializer) |
CanWriteKeyIdentifierClauseCore(SecurityKeyIdentifierClause) |
Gets a value that indicates whether the key identifier clause core with a specified key identifier clause can be written. |
CanWriteKeyIdentifierCore(SecurityKeyIdentifier) |
Gets a value that indicates whether the key identifier core with a specified key identifier clause can be written. |
CanWriteToken(SecurityToken) |
Determines whether this serializer can write the specified security token to XML. (Inherited from SecurityTokenSerializer) |
CanWriteTokenCore(SecurityToken) |
Gets a value that indicates whether the token core with a specified security token can be written. |
CreateKeyIdentifierClauseFromTokenXml(XmlElement, SecurityTokenReferenceStyle) |
Creates a key identifier clause from a token expressed as XML. |
Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
GetTokenTypeUri(Type) |
Gets the URI of the security token of the specified type. |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
ReadKeyIdentifier(XmlReader) |
Reads the key identifier using specified XML reader. (Inherited from SecurityTokenSerializer) |
ReadKeyIdentifierClause(XmlReader) |
Reads the key identifier clause using specified XML reader. (Inherited from SecurityTokenSerializer) |
ReadKeyIdentifierClauseCore(XmlReader) |
Reads the key identifier clause core using the specified XmlReader. |
ReadKeyIdentifierCore(XmlReader) |
Reads the key identifier core using the specified XmlReader. |
ReadToken(XmlReader, SecurityTokenResolver) |
Reads the security token pointed at by the specified XML reader. (Inherited from SecurityTokenSerializer) |
ReadTokenCore(XmlReader, SecurityTokenResolver) |
Reads the token core using the specified XmlReader. |
ToString() |
Returns a string that represents the current object. (Inherited from Object) |
TryCreateKeyIdentifierClauseFromTokenXml(XmlElement, SecurityTokenReferenceStyle, SecurityKeyIdentifierClause) |
Attempts to create a key identifier clause from a token expressed as XML. |
WriteKeyIdentifier(XmlWriter, SecurityKeyIdentifier) |
Writes the specified key identifier using the specified XML writer. (Inherited from SecurityTokenSerializer) |
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause) |
Writes the specified key identifier clause using the specified XML writer. (Inherited from SecurityTokenSerializer) |
WriteKeyIdentifierClauseCore(XmlWriter, SecurityKeyIdentifierClause) |
Writes the key identifier clause core with a specified key identifier clause using the specified XmlWriter. |
WriteKeyIdentifierCore(XmlWriter, SecurityKeyIdentifier) |
Writes the key identifier core with a specified key identifier clause using the specified XmlWriter. |
WriteToken(XmlWriter, SecurityToken) |
Writes the specified security token using the specified XML writer. (Inherited from SecurityTokenSerializer) |
WriteTokenCore(XmlWriter, SecurityToken) |
Writes the token core with a specified security token using the specified XmlWriter. |