WSSecurityTokenSerializer Classe

Definição

A classe utilizada para serializar e desserializar 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 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 seguinte demonstra uma sobreposição personalizada desta 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

Name Description
WSSecurityTokenSerializer()

Inicializa uma nova instância da WSSecurityTokenSerializer classe.

WSSecurityTokenSerializer(Boolean)

Inicializa uma nova instância da WSSecurityTokenSerializer classe.

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

Inicializa uma nova instância da WSSecurityTokenSerializer classe.

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

Inicializa uma nova instância da WSSecurityTokenSerializer classe.

WSSecurityTokenSerializer(SecurityVersion, Boolean, SamlSerializer)

Inicializa uma nova instância da WSSecurityTokenSerializer classe.

WSSecurityTokenSerializer(SecurityVersion, Boolean)

Inicializa uma nova instância da WSSecurityTokenSerializer classe.

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

Inicializa uma nova instância da WSSecurityTokenSerializer classe.

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

Inicializa uma nova instância da WSSecurityTokenSerializer classe.

WSSecurityTokenSerializer(SecurityVersion)

Inicializa uma nova instância da WSSecurityTokenSerializer classe.

Propriedades

Name Description
DefaultInstance

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

EmitBspRequiredAttributes

Recebe um valor que indica se deve emitir os atributos exigidos pelo BSP.

MaximumKeyDerivationLabelLength

Obtém o comprimento máximo da etiqueta de derivação da chave.

MaximumKeyDerivationNonceLength

Obtém o comprimento máximo de nonce de derivação da chave.

MaximumKeyDerivationOffset

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

SecurityVersion

Recebe a versão de segurança.

Métodos

Name Description
CanReadKeyIdentifier(XmlReader)

Determina se este serializador consegue ler o <KeyIdentifier> elemento referido pelo leitor XML especificado.

(Herdado de SecurityTokenSerializer)
CanReadKeyIdentifierClause(XmlReader)

Determina se este serializador pode ler uma cláusula num <KeyIdentifier> elemento referido pelo leitor XML especificado.

(Herdado de SecurityTokenSerializer)
CanReadKeyIdentifierClauseCore(XmlReader)

Recebe um valor que indica se o núcleo da cláusula identificadora de chave pode ser lido usando o leitor especificado.

CanReadKeyIdentifierCore(XmlReader)

Recebe 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 consegue ler o token de segurança apontado pelo leitor XML especificado.

(Herdado de SecurityTokenSerializer)
CanReadTokenCore(XmlReader)

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

CanWriteKeyIdentifier(SecurityKeyIdentifier)

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

(Herdado de SecurityTokenSerializer)
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause)

Determina se este serializador pode escrever a cláusula identificadora de chave especificada.

(Herdado de SecurityTokenSerializer)
CanWriteKeyIdentifierClauseCore(SecurityKeyIdentifierClause)

Obtém um valor que indica se o núcleo da cláusula identificadora de chave com uma cláusula especificada pode ser escrito.

CanWriteKeyIdentifierCore(SecurityKeyIdentifier)

Recebe um valor que indica se o núcleo do identificador de chave com uma cláusula especificada pode ser escrito.

CanWriteToken(SecurityToken)

Determina se este serializador pode escrever o token de segurança especificado para XML.

(Herdado de SecurityTokenSerializer)
CanWriteTokenCore(SecurityToken)

Recebe um valor que indica se o núcleo do token com um token de segurança especificado pode ser escrito.

CreateKeyIdentifierClauseFromTokenXml(XmlElement, SecurityTokenReferenceStyle)

Cria uma cláusula identificadora de chave a partir de um token expresso como XML.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(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 atual Object.

(Herdado de Object)
ReadKeyIdentifier(XmlReader)

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

(Herdado de SecurityTokenSerializer)
ReadKeyIdentifierClause(XmlReader)

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

(Herdado de SecurityTokenSerializer)
ReadKeyIdentifierClauseCore(XmlReader)

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

ReadKeyIdentifierCore(XmlReader)

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

ReadToken(XmlReader, SecurityTokenResolver)

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

(Herdado de SecurityTokenSerializer)
ReadTokenCore(XmlReader, SecurityTokenResolver)

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

ToString()

Devolve uma cadeia que representa o objeto atual.

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

Tentativas de criar uma cláusula identificadora de chave a partir de um token expresso como XML.

WriteKeyIdentifier(XmlWriter, SecurityKeyIdentifier)

Escreve o identificador de chave especificado usando o escritor XML especificado.

(Herdado de SecurityTokenSerializer)
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause)

Escreve a cláusula identificadora de chave especificada usando o escritor XML especificado.

(Herdado de SecurityTokenSerializer)
WriteKeyIdentifierClauseCore(XmlWriter, SecurityKeyIdentifierClause)

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

WriteKeyIdentifierCore(XmlWriter, SecurityKeyIdentifier)

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

WriteToken(XmlWriter, SecurityToken)

Escreve o token de segurança especificado usando o escritor XML especificado.

(Herdado de SecurityTokenSerializer)
WriteTokenCore(XmlWriter, SecurityToken)

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

Aplica-se a