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 |
Возвращает максимальную длину производного ключа. |
| 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. |