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
- Наследование
Примеры
В следующем коде показано переопределение этого класса.
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
Конструкторы
Свойства
DefaultInstance |
Возвращает экземпляр этого класса по умолчанию. |
EmitBspRequiredAttributes |
Возвращает значение, указывающее, следует ли создать необходимые атрибуты BSP. |
MaximumKeyDerivationLabelLength |
Возвращает максимальную длину метки производного ключа. |
MaximumKeyDerivationNonceLength |
Возвращает максимальную длину однократно используемого числа (nonce) для производного ключа. |
MaximumKeyDerivationOffset |
Возвращает максимальное смещение производного ключа. |
SecurityVersion |
Возвращает версию системы безопасности. |
Методы
CanReadKeyIdentifier(XmlReader) |
Определяет, может ли данный сериализатор считывать элемент |
CanReadKeyIdentifierClause(XmlReader) |
Определяет, может ли данный сериализатор считывать предложение в элементе |
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. |