Partilhar via


WSSecurityTokenSerializer Classe

Definição

A classe usada para serializar e desserializar os tokens de segurança, identificadores de chave de segurança e cláusulas de identificador de chave de segurança definidas nas especificações de segurança de WS-Security, WS-Trust e WS-SecureConversation.

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
Herança
WSSecurityTokenSerializer

Exemplos

O código a seguir demonstra uma substituição personalizada dessa classe.

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

Construtores

WSSecurityTokenSerializer()

Inicializa uma nova instância da classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(Boolean)

Inicializa uma nova instância da classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion)

Inicializa uma nova instância da classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion, Boolean)

Inicializa uma nova instância da classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion, Boolean, SamlSerializer)

Inicializa uma nova instância da classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion, Boolean, SamlSerializer, SecurityStateEncoder, IEnumerable<Type>)

Inicializa uma nova instância da classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion, Boolean, SamlSerializer, SecurityStateEncoder, IEnumerable<Type>, Int32, Int32, Int32)

Inicializa uma nova instância da classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion, TrustVersion, SecureConversationVersion, Boolean, SamlSerializer, SecurityStateEncoder, IEnumerable<Type>)

Inicializa uma nova instância da classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion, TrustVersion, SecureConversationVersion, Boolean, SamlSerializer, SecurityStateEncoder, IEnumerable<Type>, Int32, Int32, Int32)

Inicializa uma nova instância da classe WSSecurityTokenSerializer.

Propriedades

DefaultInstance

Obtém uma instância padrão dessa classe.

EmitBspRequiredAttributes

Obtém um valor que indica se os atributos exigidos por BSP devem ser emitidos.

MaximumKeyDerivationLabelLength

Obtém o tamanho máximo do rótulo de derivação de chave.

MaximumKeyDerivationNonceLength

Obtém o tamanho máximo do nonce de derivação de chave.

MaximumKeyDerivationOffset

Obtém o tamanho máximo do deslocamento de derivação de chave.

SecurityVersion

Obtém a versão de segurança.

Métodos

CanReadKeyIdentifier(XmlReader)

Determina se este serializador pode ler o elemento <KeyIdentifier> referenciado pelo leitor de XML especificado.

(Herdado de SecurityTokenSerializer)
CanReadKeyIdentifierClause(XmlReader)

Determina se este serializador pode ler uma cláusula em um elemento <KeyIdentifier> referenciado pelo leitor de XML especificado.

(Herdado de SecurityTokenSerializer)
CanReadKeyIdentifierClauseCore(XmlReader)

Obtém um valor que indica se o núcleo da cláusula do identificador de chave pode ser lido usando o leitor especificado.

CanReadKeyIdentifierCore(XmlReader)

Obtém um valor que indica se o núcleo do identificador de chave pode ser lido usando o leitor especificado.

CanReadToken(XmlReader)

Determina se este serializador pode ler o token de segurança apontado pelo leitor de XML especificado.

(Herdado de SecurityTokenSerializer)
CanReadTokenCore(XmlReader)

Obtém um valor que indica se o núcleo do token pode ser lido usando o leitor especificado.

CanWriteKeyIdentifier(SecurityKeyIdentifier)

Determina se este serializador pode gravar o identificador de chave especificado.

(Herdado de SecurityTokenSerializer)
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause)

Determina se este serializador pode gravar a cláusula do identificador de chave especificada.

(Herdado de SecurityTokenSerializer)
CanWriteKeyIdentifierClauseCore(SecurityKeyIdentifierClause)

Obtém um valor que indica se o núcleo da cláusula do identificador de chave com a cláusula do identificador de chave especificada pode ser gravado.

CanWriteKeyIdentifierCore(SecurityKeyIdentifier)

Obtém um valor que indica se o núcleo do identificador de chave com a cláusula do identificador de chave especificada pode ser gravado.

CanWriteToken(SecurityToken)

Determina se este serializador pode gravar o token de segurança especificado em XML.

(Herdado de SecurityTokenSerializer)
CanWriteTokenCore(SecurityToken)

Obtém um valor que indica se o núcleo de token com um token de segurança especificado pode ser gravado.

CreateKeyIdentifierClauseFromTokenXml(XmlElement, SecurityTokenReferenceStyle)

Cria uma cláusula do identificador de chave com base em um token expresso como XML.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetTokenTypeUri(Type)

Obtém o URI do token de segurança do tipo especificado.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ReadKeyIdentifier(XmlReader)

Lê o identificador de chave usando o leitor de XML especificado.

(Herdado de SecurityTokenSerializer)
ReadKeyIdentifierClause(XmlReader)

Lê a cláusula do identificador de chave usando o leitor de XML especificado.

(Herdado de SecurityTokenSerializer)
ReadKeyIdentifierClauseCore(XmlReader)

Lê o núcleo da cláusula do identificador de chave usando o XmlReader especificado.

ReadKeyIdentifierCore(XmlReader)

Lê o núcleo do identificador de chave usando o XmlReader especificado.

ReadToken(XmlReader, SecurityTokenResolver)

Lê o token de segurança apontado pelo leitor de XML especificado.

(Herdado de SecurityTokenSerializer)
ReadTokenCore(XmlReader, SecurityTokenResolver)

Lê o núcleo do token usando o XmlReader especificado.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
TryCreateKeyIdentifierClauseFromTokenXml(XmlElement, SecurityTokenReferenceStyle, SecurityKeyIdentifierClause)

Tenta criar uma cláusula do identificador de chave com base em um token expresso como XML.

WriteKeyIdentifier(XmlWriter, SecurityKeyIdentifier)

Grava o identificador de chave especificado usando o gravador de XML especificado.

(Herdado de SecurityTokenSerializer)
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause)

Grava a cláusula de identificador de chave especificada usando o gravador de XML especificado.

(Herdado de SecurityTokenSerializer)
WriteKeyIdentifierClauseCore(XmlWriter, SecurityKeyIdentifierClause)

Grava o núcleo da cláusula do identificador de chave com uma cláusula do identificador de chave especificada usando o XmlWriter especificado.

WriteKeyIdentifierCore(XmlWriter, SecurityKeyIdentifier)

Grava o núcleo do identificador de chave com uma cláusula do identificador de chave especificada usando o XmlWriter especificado.

WriteToken(XmlWriter, SecurityToken)

Grava o token de segurança especificado usando o gravador de XML especificado.

(Herdado de SecurityTokenSerializer)
WriteTokenCore(XmlWriter, SecurityToken)

Grava o núcleo do token com um token de segurança especificado usando o XmlWriter especificado.

Aplica-se a