WSSecurityTokenSerializer Classe

Definizione

Classe utilizzata per serializzare e deserializzare i token di sicurezza, gli identificatori della chiave di sicurezza e le clausole dell'identificatore della chiave di sicurezza definite nelle specifiche di sicurezza 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
Ereditarietà
WSSecurityTokenSerializer

Esempio

Nel seguente codice viene mostrato un override personalizzato di questa 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

Costruttori

WSSecurityTokenSerializer()

Inizializza una nuova istanza della classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(Boolean)

Inizializza una nuova istanza della classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion)

Inizializza una nuova istanza della classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion, Boolean)

Inizializza una nuova istanza della classe WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion, Boolean, SamlSerializer)

Inizializza una nuova istanza della classe WSSecurityTokenSerializer.

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

Inizializza una nuova istanza della classe WSSecurityTokenSerializer.

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

Inizializza una nuova istanza della classe WSSecurityTokenSerializer.

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

Inizializza una nuova istanza della classe WSSecurityTokenSerializer.

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

Inizializza una nuova istanza della classe WSSecurityTokenSerializer.

Proprietà

DefaultInstance

Ottiene un'istanza predefinita di questa classe.

EmitBspRequiredAttributes

Ottiene un valore che indica se generare gli attributi BSP necessari.

MaximumKeyDerivationLabelLength

Ottiene la lunghezza massima dell'etichetta di derivazione della chiave.

MaximumKeyDerivationNonceLength

Ottiene la lunghezza massima del nonce di derivazione della chiave.

MaximumKeyDerivationOffset

Ottiene l'offset di derivazione della chiave massimo.

SecurityVersion

Ottiene la versione della sicurezza.

Metodi

CanReadKeyIdentifier(XmlReader)

Determina se questo serializzatore può leggere l'elemento <KeyIdentifier> a cui il lettore XML specificato fa riferimento.

(Ereditato da SecurityTokenSerializer)
CanReadKeyIdentifierClause(XmlReader)

Determina se questo serializzatore è in grado di leggere una clausola in un elemento <KeyIdentifier> a cui fa riferimento il lettore XML specificato.

(Ereditato da SecurityTokenSerializer)
CanReadKeyIdentifierClauseCore(XmlReader)

Ottiene un valore che indica se il nucleo della clausola dell'identificatore di chiave può essere letto utilizzando un lettore specificato.

CanReadKeyIdentifierCore(XmlReader)

Ottiene un valore che indica se il nucleo dell'identificatore di chiave può essere letto utilizzando un lettore specificato.

CanReadToken(XmlReader)

Determina se questo serializzatore può leggere il token di sicurezza a cui fa riferimento il lettore XML specificato.

(Ereditato da SecurityTokenSerializer)
CanReadTokenCore(XmlReader)

Ottiene un valore che indica se il nucleo del token può essere letto utilizzando un lettore specificato.

CanWriteKeyIdentifier(SecurityKeyIdentifier)

Determina se questo serializzatore può scrivere l'identificatore di chiave specificato.

(Ereditato da SecurityTokenSerializer)
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause)

Determina se questo serializzatore può scrivere la clausola dell'identificatore di chiave specificata.

(Ereditato da SecurityTokenSerializer)
CanWriteKeyIdentifierClauseCore(SecurityKeyIdentifierClause)

Ottiene un valore che indica se è possibile scrivere nel nucleo della clausola dell'identificatore di chiave con una clausola dell'identificatore di chiave specificata.

CanWriteKeyIdentifierCore(SecurityKeyIdentifier)

Ottiene un valore che indica se è possibile scrivere nel nucleo dell'identificatore di chiave con una clausola dell'identificatore di chiave specificata.

CanWriteToken(SecurityToken)

Determina se questo serializzatore può scrivere il token di sicurezza specificato in formato XML.

(Ereditato da SecurityTokenSerializer)
CanWriteTokenCore(SecurityToken)

Ottiene un valore che indica se è possibile scrivere nel nucleo del token con un token di sicurezza specificato.

CreateKeyIdentifierClauseFromTokenXml(XmlElement, SecurityTokenReferenceStyle)

Crea una clausola dell'identificatore di chiave da un token espresso in formato XML.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetTokenTypeUri(Type)

Ottiene l'URI del token di sicurezza del tipo specificato.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ReadKeyIdentifier(XmlReader)

Legge l'identificatore di chiave utilizzando il lettore XML specificato.

(Ereditato da SecurityTokenSerializer)
ReadKeyIdentifierClause(XmlReader)

Legge la clausola dell'identificatore di chiave mediante il lettore XML specificato.

(Ereditato da SecurityTokenSerializer)
ReadKeyIdentifierClauseCore(XmlReader)

Legge il nucleo della clausola dell'identificatore di chiave utilizzando l'elemento XmlReader specificato.

ReadKeyIdentifierCore(XmlReader)

Legge il nucleo dell'identificatore di chiave utilizzando l'elemento XmlReader specificato.

ReadToken(XmlReader, SecurityTokenResolver)

Legge il token di sicurezza a cui fa riferimento il lettore XML specificato.

(Ereditato da SecurityTokenSerializer)
ReadTokenCore(XmlReader, SecurityTokenResolver)

Legge il nucleo del token utilizzando l'elemento XmlReader specificato.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TryCreateKeyIdentifierClauseFromTokenXml(XmlElement, SecurityTokenReferenceStyle, SecurityKeyIdentifierClause)

Tenta di creare una clausola dell'identificatore di chiave da un token espresso in formato XML.

WriteKeyIdentifier(XmlWriter, SecurityKeyIdentifier)

Scrive l'identificatore di chiave specificato utilizzando il writer XML specificato.

(Ereditato da SecurityTokenSerializer)
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause)

Scrive la clausola dell'identificatore di chiave specificata utilizzando il writer XML specificato.

(Ereditato da SecurityTokenSerializer)
WriteKeyIdentifierClauseCore(XmlWriter, SecurityKeyIdentifierClause)

Scrive il nucleo della clausola dell'identificatore di chiave con una clausola dell'identificatore di chiave specificata utilizzando l'elemento XmlWriter specificato.

WriteKeyIdentifierCore(XmlWriter, SecurityKeyIdentifier)

Scrive il nucleo dell'identificatore di chiave con una clausola dell'identificatore di chiave specificata utilizzando l'elemento XmlWriter specificato.

WriteToken(XmlWriter, SecurityToken)

Scrive il token di sicurezza specificato utilizzando il writer XML specificato.

(Ereditato da SecurityTokenSerializer)
WriteTokenCore(XmlWriter, SecurityToken)

Scrive il nucleo del token con un token di sicurezza specificato utilizzando l'elemento XmlWriter specificato.

Si applica a