語言

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

建構函式

名稱 Description
WSSecurityTokenSerializer()

初始化 WSSecurityTokenSerializer 類別的新執行個體。

WSSecurityTokenSerializer(Boolean)

初始化 WSSecurityTokenSerializer 類別的新執行個體。

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

初始化 WSSecurityTokenSerializer 類別的新執行個體。

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

初始化 WSSecurityTokenSerializer 類別的新執行個體。

WSSecurityTokenSerializer(SecurityVersion, Boolean, SamlSerializer)

初始化 WSSecurityTokenSerializer 類別的新執行個體。

WSSecurityTokenSerializer(SecurityVersion, Boolean)

初始化 WSSecurityTokenSerializer 類別的新執行個體。

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

初始化 WSSecurityTokenSerializer 類別的新執行個體。

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

初始化 WSSecurityTokenSerializer 類別的新執行個體。

WSSecurityTokenSerializer(SecurityVersion)

初始化 WSSecurityTokenSerializer 類別的新執行個體。

屬性

名稱 Description
DefaultInstance

會拿到這個類別的預設實例。

EmitBspRequiredAttributes

會獲得一個值,指示是否要發出 BSP 所需的屬性。

MaximumKeyDerivationLabelLength

獲得最大金鑰衍生標籤長度。

MaximumKeyDerivationNonceLength

獲得最大金鑰推導的一次性長度。

MaximumKeyDerivationOffset

獲得最大金鑰推導偏移量。

SecurityVersion

拿到安全版本。

方法

名稱 Description
CanReadKeyIdentifier(XmlReader)

判斷此序列化器是否能讀取 <KeyIdentifier> 指定 XML 讀取器所指的元素。

(繼承來源 SecurityTokenSerializer)
CanReadKeyIdentifierClause(XmlReader)

判斷此序列化器是否能讀取指定 XML 讀取器所參考元素中的 <KeyIdentifier> 子句。

(繼承來源 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安全令牌寫入令牌核心。

適用於