Sdílet prostřednictvím


WSSecurityTokenSerializer Třída

Definice

Třída použitá pro serializaci a deserializaci tokenů zabezpečení, identifikátory klíčů zabezpečení a identifikátory klíče zabezpečení klauzule definované ve specifikacích zabezpečení WS-Security, WS-Trust a 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
Dědičnost
WSSecurityTokenSerializer

Příklady

Následující kód ukazuje vlastní přepsání této třídy.

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

Konstruktory

WSSecurityTokenSerializer()

Inicializuje novou instanci WSSecurityTokenSerializer třídy .

WSSecurityTokenSerializer(Boolean)

Inicializuje novou instanci WSSecurityTokenSerializer třídy .

WSSecurityTokenSerializer(SecurityVersion)

Inicializuje novou instanci WSSecurityTokenSerializer třídy .

WSSecurityTokenSerializer(SecurityVersion, Boolean)

Inicializuje novou instanci WSSecurityTokenSerializer třídy .

WSSecurityTokenSerializer(SecurityVersion, Boolean, SamlSerializer)

Inicializuje novou instanci WSSecurityTokenSerializer třídy .

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

Inicializuje novou instanci WSSecurityTokenSerializer třídy .

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

Inicializuje novou instanci WSSecurityTokenSerializer třídy .

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

Inicializuje novou instanci WSSecurityTokenSerializer třídy .

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

Inicializuje novou instanci WSSecurityTokenSerializer třídy .

Vlastnosti

DefaultInstance

Získá výchozí instanci této třídy.

EmitBspRequiredAttributes

Získá hodnotu, která označuje, zda se mají generovat požadované atributy BSP.

MaximumKeyDerivationLabelLength

Získá maximální délku popisku odvození klíče.

MaximumKeyDerivationNonceLength

Získá maximální délku odvozování klíče nonce.

MaximumKeyDerivationOffset

Získá posun maximálního odvození klíče.

SecurityVersion

Získá verzi zabezpečení.

Metody

CanReadKeyIdentifier(XmlReader)

Určuje, zda tento serializátor může číst <KeyIdentifier> prvek odkazovaný zadaný čtenář XML.

(Zděděno od SecurityTokenSerializer)
CanReadKeyIdentifierClause(XmlReader)

Určuje, zda tento serializátor může číst klauzuli v elementu <KeyIdentifier> , na který odkazuje zadaný čtenář XML.

(Zděděno od SecurityTokenSerializer)
CanReadKeyIdentifierClauseCore(XmlReader)

Získá hodnotu, která označuje, zda klíč identifikátor klauzule core lze číst pomocí zadané čtečky.

CanReadKeyIdentifierCore(XmlReader)

Získá hodnotu, která označuje, zda klíč identifikátor jádra lze číst pomocí zadaného čtenáře.

CanReadToken(XmlReader)

Určuje, zda tento serializátor může číst token zabezpečení, na který odkazuje zadaná čtečka XML.

(Zděděno od SecurityTokenSerializer)
CanReadTokenCore(XmlReader)

Získá hodnotu, která označuje, zda jádro tokenu lze číst pomocí zadaného čtenáře.

CanWriteKeyIdentifier(SecurityKeyIdentifier)

Určuje, zda tento serializátor může zapisovat identifikátor zadaného klíče.

(Zděděno od SecurityTokenSerializer)
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause)

Určuje, zda tento serializátor může zapisovat zadaný identifikátor klíče klauzule.

(Zděděno od SecurityTokenSerializer)
CanWriteKeyIdentifierClauseCore(SecurityKeyIdentifierClause)

Získá hodnotu, která označuje, zda klíč identifikátor klauzule jádro se zadaný klíč identifikátor klauzule lze zapisovat.

CanWriteKeyIdentifierCore(SecurityKeyIdentifier)

Získá hodnotu, která označuje, zda je možné zapsat jádro identifikátoru klíče se zadanou klauzulí identifikátoru klíče.

CanWriteToken(SecurityToken)

Určuje, zda tento serializátor může zapisovat zadaný token zabezpečení do XML.

(Zděděno od SecurityTokenSerializer)
CanWriteTokenCore(SecurityToken)

Získá hodnotu, která označuje, zda je možné zapsat jádro tokenu se zadaným tokenem zabezpečení.

CreateKeyIdentifierClauseFromTokenXml(XmlElement, SecurityTokenReferenceStyle)

Vytvoří klauzuli identifikátoru klíče z tokenu vyjádřeného jako XML.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetTokenTypeUri(Type)

Získá identifikátor URI tokenu zabezpečení zadaného typu.

GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ReadKeyIdentifier(XmlReader)

Přečte identifikátor klíče pomocí zadané čtečky XML.

(Zděděno od SecurityTokenSerializer)
ReadKeyIdentifierClause(XmlReader)

Přečte klauzuli identifikátoru klíče pomocí zadané čtečky XML.

(Zděděno od SecurityTokenSerializer)
ReadKeyIdentifierClauseCore(XmlReader)

Načte jádro klauzule identifikátoru klíče pomocí zadaného XmlReaderidentifikátoru .

ReadKeyIdentifierCore(XmlReader)

Načte jádro identifikátoru klíče pomocí zadaného XmlReaderidentifikátoru .

ReadToken(XmlReader, SecurityTokenResolver)

Načte token zabezpečení, na který odkazuje zadaný čtenář XML.

(Zděděno od SecurityTokenSerializer)
ReadTokenCore(XmlReader, SecurityTokenResolver)

Načte jádro tokenu pomocí zadaného XmlReader.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
TryCreateKeyIdentifierClauseFromTokenXml(XmlElement, SecurityTokenReferenceStyle, SecurityKeyIdentifierClause)

Pokusí se vytvořit klauzuli identifikátoru klíče z tokenu vyjádřeného jako XML.

WriteKeyIdentifier(XmlWriter, SecurityKeyIdentifier)

Zapíše zadaný identifikátor klíče pomocí zadaného zapisovače XML.

(Zděděno od SecurityTokenSerializer)
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause)

Zapíše zadanou klauzuli identifikátoru klíče pomocí zadaného zapisovače XML.

(Zděděno od SecurityTokenSerializer)
WriteKeyIdentifierClauseCore(XmlWriter, SecurityKeyIdentifierClause)

Zapíše jádro klauzule identifikátoru klíče se zadanou klauzulí identifikátoru klíče pomocí zadané XmlWriterklauzule .

WriteKeyIdentifierCore(XmlWriter, SecurityKeyIdentifier)

Zapíše jádro identifikátoru klíče se zadanou klauzulí identifikátoru klíče pomocí zadané XmlWriterklauzule .

WriteToken(XmlWriter, SecurityToken)

Zapíše zadaný token zabezpečení pomocí zadaného zapisovače XML.

(Zděděno od SecurityTokenSerializer)
WriteTokenCore(XmlWriter, SecurityToken)

Zapíše jádro tokenu se zadaným tokenem zabezpečení pomocí zadaného XmlWritertokenu .

Platí pro