Поделиться через


WSSecurityTokenSerializer Класс

Определение

Класс, используемый для сериализации и десериализации маркеров безопасности, идентификаторов ключей безопасности и предложений идентификаторов ключей безопасности, определенных в спецификациях безопасности WS-Security, WS-Trust и 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
Наследование
WSSecurityTokenSerializer

Примеры

В следующем коде показано переопределение этого класса.

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

Конструкторы

WSSecurityTokenSerializer()

Инициализирует новый экземпляр класса WSSecurityTokenSerializer.

WSSecurityTokenSerializer(Boolean)

Инициализирует новый экземпляр класса WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion)

Инициализирует новый экземпляр класса WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion, Boolean)

Инициализирует новый экземпляр класса WSSecurityTokenSerializer.

WSSecurityTokenSerializer(SecurityVersion, Boolean, SamlSerializer)

Инициализирует новый экземпляр класса WSSecurityTokenSerializer.

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

Инициализирует новый экземпляр класса WSSecurityTokenSerializer.

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

Инициализирует новый экземпляр класса WSSecurityTokenSerializer.

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

Инициализирует новый экземпляр класса WSSecurityTokenSerializer.

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

Инициализирует новый экземпляр класса WSSecurityTokenSerializer.

Свойства

DefaultInstance

Возвращает экземпляр этого класса по умолчанию.

EmitBspRequiredAttributes

Возвращает значение, указывающее, следует ли создать необходимые атрибуты BSP.

MaximumKeyDerivationLabelLength

Возвращает максимальную длину метки производного ключа.

MaximumKeyDerivationNonceLength

Возвращает максимальную длину однократно используемого числа (nonce) для производного ключа.

MaximumKeyDerivationOffset

Возвращает максимальное смещение производного ключа.

SecurityVersion

Возвращает версию системы безопасности.

Методы

CanReadKeyIdentifier(XmlReader)

Определяет, может ли данный сериализатор считывать элемент <KeyIdentifier>, на который ссылается указанное средство чтения XML.

(Унаследовано от SecurityTokenSerializer)
CanReadKeyIdentifierClause(XmlReader)

Определяет, может ли данный сериализатор считывать предложение в элементе <KeyIdentifier>, на который ссылается указанное средство чтения XML.

(Унаследовано от SecurityTokenSerializer)
CanReadKeyIdentifierClauseCore(XmlReader)

Возвращает значение, определяющее, можно ли считать ядро выражения идентификатора ключа с помощью указанного модуля чтения.

CanReadKeyIdentifierCore(XmlReader)

Возвращает значение, определяющее, можно ли считать ядро идентификатора ключа с помощью указанного модуля чтения.

CanReadToken(XmlReader)

Определяет, может ли данный сериализатор считывать маркер безопасности, на который ссылается указанное средство чтения XML.

(Унаследовано от SecurityTokenSerializer)
CanReadTokenCore(XmlReader)

Возвращает значение, определяющее, можно ли считать ядро маркера с помощью указанного модуля чтения.

CanWriteKeyIdentifier(SecurityKeyIdentifier)

Определяет, может ли данный сериализатор записывать указанный идентификатор ключа.

(Унаследовано от SecurityTokenSerializer)
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause)

Определяет, может ли данный сериализатор записывать указанное предложение идентификатора ключа.

(Унаследовано от SecurityTokenSerializer)
CanWriteKeyIdentifierClauseCore(SecurityKeyIdentifierClause)

Возвращает значение, определяющее, можно ли записать ядро выражения идентификатора ключа с указанным выражением идентификатора ключа.

CanWriteKeyIdentifierCore(SecurityKeyIdentifier)

Возвращает значение, определяющее, можно ли записать ядро идентификатора ключа с указанным выражением идентификатора ключа.

CanWriteToken(SecurityToken)

Определяет, может ли данный сериализатор записывать указанный маркер безопасности в формате XML.

(Унаследовано от SecurityTokenSerializer)
CanWriteTokenCore(SecurityToken)

Возвращает значение, определяющее, можно ли записать ядро маркера с указанным маркером безопасности.

CreateKeyIdentifierClauseFromTokenXml(XmlElement, SecurityTokenReferenceStyle)

Создает выражение идентификатора ключа на основе маркера в формате XML.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetTokenTypeUri(Type)

Возвращает универсальный код ресурса (URI) маркера безопасности указанного типа.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ReadKeyIdentifier(XmlReader)

Считывает идентификатор ключа, используя указанное средство чтения XML.

(Унаследовано от SecurityTokenSerializer)
ReadKeyIdentifierClause(XmlReader)

Считывает конструкцию идентификатора ключа, используя указанное средство чтения XML.

(Унаследовано от SecurityTokenSerializer)
ReadKeyIdentifierClauseCore(XmlReader)

Считывает ядро выражения идентификатора ключа с помощью указанного модуля чтения XmlReader.

ReadKeyIdentifierCore(XmlReader)

Считывает ядро идентификатора ключа с помощью указанного модуля чтения XmlReader.

ReadToken(XmlReader, SecurityTokenResolver)

Считывает маркер безопасности, на который ссылается указанное средство чтения XML.

(Унаследовано от SecurityTokenSerializer)
ReadTokenCore(XmlReader, SecurityTokenResolver)

Считывает ядро маркера с помощью указанного модуля чтения XmlReader.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TryCreateKeyIdentifierClauseFromTokenXml(XmlElement, SecurityTokenReferenceStyle, SecurityKeyIdentifierClause)

Создает предложение идентификатора ключа на основе маркера в формате XML.

WriteKeyIdentifier(XmlWriter, SecurityKeyIdentifier)

Записывает указанный идентификатор ключа с помощью заданного модуля записи XML.

(Унаследовано от SecurityTokenSerializer)
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause)

Записывает указанную конструкцию идентификатора ключа с помощью заданного модуля записи XML.

(Унаследовано от SecurityTokenSerializer)
WriteKeyIdentifierClauseCore(XmlWriter, SecurityKeyIdentifierClause)

Записывает ядро выражения идентификатора ключа с заданным выражением идентификатора ключа с помощью указанного модуля записи XmlWriter.

WriteKeyIdentifierCore(XmlWriter, SecurityKeyIdentifier)

Записывает ядро идентификатора ключа с заданным выражением идентификатора ключа с помощью указанного модуля записи XmlWriter.

WriteToken(XmlWriter, SecurityToken)

Записывает указанный маркер безопасности с помощью заданного модуля записи XML.

(Унаследовано от SecurityTokenSerializer)
WriteTokenCore(XmlWriter, SecurityToken)

Записывает ядро маркера с заданным маркером безопасности с помощью указанного модуля записи XmlWriter.

Применяется к