SecurityToken SecurityToken SecurityToken SecurityToken Class

Definition

Stellt eine Basisklasse dar, die verwendet wird, um alle Sicherheitstoken zu implementieren.Represents a base class used to implement all security tokens.

public ref class SecurityToken abstract
public abstract class SecurityToken
type SecurityToken = class
Public MustInherit Class SecurityToken
Vererbung
SecurityTokenSecurityTokenSecurityTokenSecurityToken
Abgeleitet

Beispiele

Die Codebeispiele, die in verwendet werden die SecurityToken Themen stammen aus der Custom Token Beispiel.The code examples that are used in the SecurityToken topics are taken from the Custom Token sample. Dieses Beispiel enthält die benutzerdefinierte Klassen, die Verarbeitung von Simple Web Token (SWT) zu ermöglichen.This sample provides custom classes that enable processing of Simple Web Tokens (SWT). Es beinhaltet die Implementierung einer SimpleWebToken Klasse und ein SimpleWebTokenHandler -Klasse als auch andere Klassen, die SWT-Token zu unterstützen.It includes an implementation of a SimpleWebToken class and a SimpleWebTokenHandler class, as well as other classes that support SWT tokens. Weitere Informationen in diesem Beispiel und andere Beispiele sind für WIF und wo Sie sie herunterladen, finden Sie unter Index für WIF-Codebeispiele.For information about this sample and other samples available for WIF and about where to download them, see WIF Code Sample Index. Der folgende Code zeigt die Implementierung der SimpleWebToken Klasse.The following code shows the implementation of the SimpleWebToken class. Diese Klasse erweitert SecurityToken.This class extends SecurityToken.

/// <summary>
/// Defines the set of constants for the Simple Web Token.
/// </summary>
public static class SimpleWebTokenConstants
{
    public const string Audience = "Audience";
    public const string ExpiresOn = "ExpiresOn";
    public const string Id = "Id";
    public const string Issuer = "Issuer";
    public const string Signature = "HMACSHA256";
    public const string ValidFrom = "ValidFrom";
    public const string ValueTypeUri = "http://schemas.xmlsoap.org/ws/2009/11/swt-token-profile-1.0";     
}
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.IdentityModel.Tokens;

namespace SimpleWebToken
{
    /// <summary>
    /// This class represents the token format for the SimpleWebToken.
    /// </summary>
    public class SimpleWebToken : SecurityToken
    {
        public static DateTime SwtBaseTime = new DateTime( 1970, 1, 1, 0, 0, 0, 0 ); // per SWT psec

        NameValueCollection _properties;
        string _serializedToken;

        /// <summary>
        /// Initializes a new instance of the <see cref="SimpleWebToken"/> class.
        /// This is an internal constructor that is only called from the <see cref="SimpleWebTokenHandler"/> when reading a token received from the wire.
        /// </summary>
        /// <param name="properties">The collection representing all the key value pairs in the token.</param>
        /// <param name="serializedToken">The serialized form of the token.</param>
        internal SimpleWebToken( NameValueCollection properties, string serializedToken )
            : this(properties)
        {
            _serializedToken = serializedToken;
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="SimpleWebToken"/> class.
        /// </summary>
        /// <param name="properties">The collection representing all the key value pairs in the token.</param>
        public SimpleWebToken( NameValueCollection properties )
        {
            if ( properties == null )
            {
                throw new ArgumentNullException( "properties" );
            }

            _properties = properties;
        }

        /// <summary>
        /// Gets the Id of the token.
        /// </summary>
        /// <value>The Id of the token.</value>
        public override string Id
        {
            get 
            {
                return _properties[SimpleWebTokenConstants.Id];
            }
        }

        /// <summary>
        /// Gets the keys associated with this token.
        /// </summary>
        /// <value>The keys associated with this token.</value>
        public override ReadOnlyCollection<SecurityKey> SecurityKeys
        {
            get 
            { 
                return new ReadOnlyCollection<SecurityKey>( new List<SecurityKey>() ); 
            }
        }

        /// <summary>
        /// Gets the time from when the token is valid.
        /// </summary>
        /// <value>The time from when the token is valid.</value>
        public override DateTime ValidFrom
        {
            get 
            {
                string validFrom = _properties[SimpleWebTokenConstants.ValidFrom];
                return GetTimeAsDateTime( String.IsNullOrEmpty( validFrom ) ? "0" : validFrom );
            }
        }

        /// <summary>
        /// Gets the time when the token expires.
        /// </summary>
        /// <value>The time up to which the token is valid.</value>
        public override DateTime ValidTo
        {
            get
            {
                string expiryTime = _properties[SimpleWebTokenConstants.ExpiresOn];
                return GetTimeAsDateTime( String.IsNullOrEmpty( expiryTime ) ? "0" : expiryTime );
            }
        }

        /// <summary>
        /// Gets the Audience for the token.
        /// </summary>
        /// <value>The audience of the token.</value>
        public string Audience
        {
            get 
            {
                return _properties[SimpleWebTokenConstants.Audience];
            }
        }

        /// <summary>
        /// Gets the Issuer for the token.
        /// </summary>
        /// <value>The issuer for the token.</value>
        public string Issuer
        {
            get 
            { 
                return _properties[SimpleWebTokenConstants.Issuer]; 
            }
        }

        /// <summary>
        /// Gets the signature for the token.
        /// </summary>
        /// <value>The signature for the token.</value>
        public string Signature
        {
            get 
            { 
                return _properties[SimpleWebTokenConstants.Signature]; 
            }
        }

        /// <summary>
        /// Gets the serialized form of the token if the token was created from its serialized form by the token handler.
        /// </summary>
        /// <value>The serialized form of the token.</value>
        public string SerializedToken
        {
            get
            {
                return _serializedToken;
            }
        }

        /// <summary>
        /// Creates a copy of all key value pairs of the token.
        /// </summary>
        /// <returns>A copy of all the key value pairs in the token.</returns>
        public NameValueCollection GetAllProperties()
        {
            return new NameValueCollection( _properties );
        }

        /// <summary>
        /// Converts the time in seconds to a <see cref="DateTime"/> object based on the base time 
        /// defined by the Simple Web Token.
        /// </summary>
        /// <param name="expiryTime">The time in seconds.</param>
        /// <returns>The time as a <see cref="DateTime"/> object.</returns>
        protected virtual DateTime GetTimeAsDateTime( string expiryTime )
        {
            long totalSeconds = 0;
            if ( !long.TryParse( expiryTime, out totalSeconds ) )
            {
                throw new SecurityTokenException("Invalid expiry time. Expected the time to be in seconds passed from 1 January 1970.");
            }

            long maxSeconds = (long)( DateTime.MaxValue - SwtBaseTime ).TotalSeconds - 1;
            if ( totalSeconds > maxSeconds )
            {
                totalSeconds = maxSeconds;
            }

            return SwtBaseTime.AddSeconds( totalSeconds );
        } 
    }    
}

Hinweise

Verwenden Sie ein Sicherheitstoken, um Authentifizierungsinformationen bereitzustellen oder eine Meldung zu schützen.Use a security token to provide authentication credentials or to protect a message.

Ein Sicherheitstoken oder verwendet werden kann, geben Sie Anmeldeinformationen für die Authentifizierung kryptografische Schlüsseldaten, bei der ein Sicherheitstoken ausgestellt, von einem Sicherheitstokendienst (STS), eine Sammlung von Ansprüchen zu einem Thema.A security token can be used to provide authentication credentials, cryptographic key material, or, in the case of a security token issued by a security token service (STS), a collection of claims about a subject. Leiten Sie alle Sicherheitstoken von der SecurityToken Klasse.All security tokens derive from the SecurityToken class.

Ab .NET 4.5, Windows Identity Foundation (WIF) wurde vollständig in .NET Framework integriert und die Klassen, die von WIF verfügbar gemacht werden, sind die bevorzugte Methode zur Behandlung von Sicherheitstoken in Ihrem Code.Beginning with .NET 4.5, Windows Identity Foundation (WIF) has been fully integrated into the .NET Framework and the classes exposed by WIF are the preferred method of handling security tokens in your code. Sicherheitstoken werden in WIF wird serialisiert und deserialisiert und aus ihren XML-Darstellung und sind überprüft mithilfe von Klassen, die von der SecurityTokenHandler Basisklasse.In WIF, security tokens are serialized and deserialized to and from their XML representation and are validated by using classes derived from the SecurityTokenHandler base class. Überprüfen eines Tokens umfasst nicht nur sicherstellen, dass das Token gültig ist, aber auch Zurückgeben einer ClaimsIdentity Instanz aus dem Token, die zum treffen von Entscheidungen für Authentifizierung und Autorisierung verwendet werden kann.Validating a token involves not just ensuring that the token is valid, but also returning a ClaimsIdentity instance from the token that can be used in making authentication and authorization decisions. Die ClaimsIdentity erstellt wird, durch die tokenvalidierungslogik des Handlers-Implementierung von der ValidateToken Methode aus den Ansprüchen im Token als auch über die Ansprüche, die für das Token systemintern sind Typ selbst enthalten.The ClaimsIdentity is constructed by the token handler's implementation of the ValidateToken method from the claims contained in the token as well as from claims that are intrinsic to the token type itself.

Im Lieferumfang von WIF ist Unterstützung für die folgenden Typen von Sicherheitstoken:WIF ships with support for the following types of security tokens:

  • Saml2SecurityToken: Stellt ein Sicherheitstoken, das auf einer SAML 2.0-Assertion basiert.Saml2SecurityToken: Represents a security token that is based upon a SAML 2.0 Assertion. Dieser Tokentyp wird in der Regel von einem Security token Service als Reaktion auf einer WS-Trust oder WS-Verbund sicherheitstokenanforderung (RST) ausgegeben.This token type is typically issued by a security token service in response to a WS-Trust or WS-Federation security token request (RST).

  • SamlSecurityToken: Stellt ein Sicherheitstoken, das auf einer SAML 1.1-Assertion basiert.SamlSecurityToken: Represents a security token that is based upon a SAML 1.1 Assertion. Dieser Tokentyp wird in der Regel von einem Security token Service als Reaktion auf einer WS-Trust oder WS-Verbund sicherheitstokenanforderung (RST) ausgegeben.This token type is typically issued by a security token service in response to a WS-Trust or WS-Federation security token request (RST).

  • KerberosRequestorSecurityToken und KerberosReceiverSecurityToken: Stellt ein Sicherheitstoken, das auf einem Kerberos-Ticket basiert, die in einer SOAP-Nachricht gesendet oder empfangen wirdKerberosRequestorSecurityToken and KerberosReceiverSecurityToken: Represents a security token that is based upon a Kerberos ticket that is received or sent in a SOAP message

  • RsaSecurityToken: Stellt ein Sicherheitstoken dar, das auf einem Schlüssel basiert, der mit dem RSA-Algorithmus erstellt wird.RsaSecurityToken: Represents a security token that is based upon key that is created using the RSA algorithm.

  • SessionSecurityToken: Stellt ein Sicherheitstoken, das Informationen zu einer Sitzung enthält.SessionSecurityToken: Represents a security token that contains information about a session.

  • UserNameSecurityToken: Stellt ein Sicherheitstoken, die basierend auf Benutzername und Kennwort dar.UserNameSecurityToken: Represents a security token that is based on a username and password.

  • WindowsSecurityToken: Stellt ein Sicherheitstoken dar, das auf der ID einer Windows-Domäne oder eines Benutzerkontos basiert.WindowsSecurityToken: Represents a security token that is based on the identity of a Windows domain or user account.

  • X509SecurityToken: Stellt ein Sicherheitstoken, die auf ein x. 509-Zertifikat basiert.X509SecurityToken: Represents a security token that is based on an X.509 certificate.

  • X509WindowsSecurityToken: Stellt ein Sicherheitstoken, das auf einem x. 509-Zertifikat basiert, das einen Windows-Domänenbenutzer oder lokalen Benutzerkonto zugeordnet ist.X509WindowsSecurityToken: Represents a security token that is based upon an X.509 certificate that is mapped to a Windows domain user or local computer user account.

Zwei weitere token Sicherheitsklassen, GenericXmlSecurityToken und EncryptedSecurityToken, kann verwendet werden, können Sie allgemeine Fälle zu behandeln.Two other security token classes, GenericXmlSecurityToken and EncryptedSecurityToken, can be used to help handle general cases.

Im allgemeinen Sicherheit, die Token in drei Hauptkategorien gliedern:Broadly speaking security tokens fall into three major categories:

  • Token, die enthalten oder verweisen kryptografische Schlüssel Material.Tokens that carry or reference cryptographic key material. Zum Beispiel die RsaSecurityToken und X509SecurityToken Typen werden häufig für diesen Zweck verwendet.For example the RsaSecurityToken and X509SecurityToken types are often used for this purpose.

  • Token, die Anmeldeinformationen für Benutzer dar, die bereits authentifiziert wurden.Tokens that represent credentials for users that have already been authenticated. Z. B. die UserNameSecurityToken, WindowsSecurityToken, im Fall von einem Benutzer mit einem Zertifikat authentifiziert die X509SecurityToken Typen.For example, the UserNameSecurityToken, WindowsSecurityToken, and, in the case of a user authenticated using a certificate, the X509SecurityToken types.

  • Token, die als Reaktion auf eine sicherheitstokenanforderung mithilfe der WS-Trust oder WS-Verbund-Protokoll von einem Sicherheitstokendienst (STS) ausgestellt werden.Tokens that are issued by a security token service (STS) in response to a security token request using either the WS-Trust or WS-Federation protocol. Diese werden in der Regel zurückgegeben, einem wst:RequestSecurityTokenResponse XML-Fragment.These are typically returned in a wst:RequestSecurityTokenResponse XML fragment. Die Saml2SecurityToken und SamlSecurityToken Typen werden meist verwendet, um diese Token darzustellen.The Saml2SecurityToken and SamlSecurityToken types are most often used to represent these tokens.

Eine spezielle Tokentyp, den SessionSecurityToken, enthält Informationen, um einen Prinzipal neu zu erstellen, bei Verwendung von Sitzungen in aktiven oder passiven Szenarien erforderlich sind.A special token type, the SessionSecurityToken, contains information necessary to recreate a principal when using sessions in active or passive scenarios.

Zum Hinzufügen von Funktionalität zu vorhandenen Tokentypen können Sie Ableiten aus der spezifische Typ und der zugehörige token Handler, um alle neuen Elemente zu unterstützen, die das Token hinzugefügt.To add functionality to existing token types you can derive from the specific type and its associated token handler to support any new elements that you add to the token. Zum Hinzufügen der Unterstützung für neue Typen von Sicherheitstoken, die Sie direkt von ableiten können die SecurityToken Klasse.To add support for new token types, you can derive directly from the SecurityToken class. Wenn Sie dies tun, müssen Sie auch eine token-Handler-Klasse zu erstellen, durch Ableiten von der SecurityTokenHandler Klasse.When you do this, you will also need to create a token handler class by deriving from the SecurityTokenHandler class. Abhängig davon wie Ihr Token ist, verwendet werden soll, müssen Sie möglicherweise auch einen benutzerdefinierten Sicherheitstoken-Resolver zu erstellen, durch Ableiten von der IssuerTokenResolver Klasse durch Ableiten von auch als ein oder mehrere benutzerdefinierte Typen den SecurityKeyIdentifierClause Klasse.Depending on how your token is to be used, you may also need to create a custom token resolver by deriving from the IssuerTokenResolver class as well as one or more custom key identifier clause types by deriving from the SecurityKeyIdentifierClause class.

Hinweise für Vererber

Müssen Sie überschreiben die Id, SecurityKeys, ValidFrom, und ValidTo Eigenschaften.You must override the Id, SecurityKeys, ValidFrom, and ValidTo properties. Die CanCreateKeyIdentifierClause<T>(), CreateKeyIdentifierClause<T>(), MatchesKeyIdentifierClause(SecurityKeyIdentifierClause), und ResolveKeyIdentifierClause(SecurityKeyIdentifierClause) Schlüsselbezeichner des Typs eine Unterstützung für alle Methoden LocalIdKeyIdentifierClause.The CanCreateKeyIdentifierClause<T>(), CreateKeyIdentifierClause<T>(), MatchesKeyIdentifierClause(SecurityKeyIdentifierClause), and ResolveKeyIdentifierClause(SecurityKeyIdentifierClause) methods all support key identifiers of type LocalIdKeyIdentifierClause. Sie müssen diese Methoden zur Unterstützung von anderen Schlüssel-ID-Typen in der abgeleiteten Klasse überschreiben.You must override these methods to support other key identifier types in your derived class.

Konstruktoren

SecurityToken() SecurityToken() SecurityToken() SecurityToken()

Wird von Konstruktoren in abgeleiteten Klassen aufgerufen, um die SecurityToken-Klasse zu initialisieren.Called by constructors in derived classes to initialize the SecurityToken class.

Eigenschaften

Id Id Id Id

Ruft einen eindeutigen Bezeichner für das Sicherheitstoken ab.Gets a unique identifier of the security token.

SecurityKeys SecurityKeys SecurityKeys SecurityKeys

Ruft die dem Sicherheitstoken zugeordneten kryptografischen Schlüssel ab.Gets the cryptographic keys associated with the security token.

ValidFrom ValidFrom ValidFrom ValidFrom

Ruft den frühesten Zeitpunkt ab, zu dem dieses Sicherheitstoken gültig ist.Gets the first instant in time at which this security token is valid.

ValidTo ValidTo ValidTo ValidTo

Ruft den spätest möglichen Zeitpunkt ab, zu dem dieses Sicherheitstoken gültig ist.Gets the last instant in time at which this security token is valid.

Methoden

CanCreateKeyIdentifierClause<T>() CanCreateKeyIdentifierClause<T>() CanCreateKeyIdentifierClause<T>() CanCreateKeyIdentifierClause<T>()

Ruft einen Wert ab, der angibt, ob dieses Sicherheitstoken den angegebenen Schlüsselbezeichner erstellen kann.Gets a value that indicates whether this security token is capable of creating the specified key identifier.

CreateKeyIdentifierClause<T>() CreateKeyIdentifierClause<T>() CreateKeyIdentifierClause<T>() CreateKeyIdentifierClause<T>()

Erstellt die angegebene Schlüsselbezeichnerklausel.Creates the specified key identifier clause.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MatchesKeyIdentifierClause(SecurityKeyIdentifierClause) MatchesKeyIdentifierClause(SecurityKeyIdentifierClause) MatchesKeyIdentifierClause(SecurityKeyIdentifierClause) MatchesKeyIdentifierClause(SecurityKeyIdentifierClause)

Gibt einen Wert zurück, der angibt, ob der Schlüsselbezeichner für diese Instanz auf den angegebenen Schlüsselbezeichner aufgelöst werden kann.Returns a value that indicates whether the key identifier for this instance can be resolved to the specified key identifier.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ResolveKeyIdentifierClause(SecurityKeyIdentifierClause) ResolveKeyIdentifierClause(SecurityKeyIdentifierClause) ResolveKeyIdentifierClause(SecurityKeyIdentifierClause) ResolveKeyIdentifierClause(SecurityKeyIdentifierClause)

Ruft den Schlüssel für die angegebene Schlüsselbezeichnerklausel ab.Gets the key for the specified key identifier clause.

ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Gilt für:

Siehe auch