SecurityToken Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Tüm güvenlik belirteçlerini uygulamak için kullanılan temel sınıfı temsil eder.
public ref class SecurityToken abstract
public abstract class SecurityToken
type SecurityToken = class
Public MustInherit Class SecurityToken
- Devralma
-
SecurityToken
- Türetilmiş
Örnekler
Konu başlıklarında SecurityToken kullanılan kod örnekleri örnekten Custom Token
alınır. Bu örnek, Basit Web Belirteçlerinin (SWT) işlenmesini sağlayan özel sınıflar sağlar. Bir sınıfın ve SimpleWebTokenHandler
sınıfın SimpleWebToken
bir uygulamasının yanı sıra SWT belirteçlerini destekleyen diğer sınıfları içerir. Bu örnek ve WIF için kullanılabilen diğer örnekler ve bunların nereden indirileceği hakkında bilgi için bkz. WIF Kod Örneği Dizini. Aşağıdaki kod, sınıfının uygulamasını SimpleWebToken
gösterir. Bu sınıf genişletir 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 );
}
}
}
Açıklamalar
Kimlik doğrulaması kimlik bilgilerini sağlamak veya bir iletiyi korumak için güvenlik belirteci kullanın.
Güvenlik belirteci kimlik doğrulama kimlik bilgilerini, şifreleme anahtarı malzemelerini veya bir güvenlik belirteci hizmeti (STS) tarafından verilen bir güvenlik belirteci söz konusu olduğunda, bir konu hakkındaki talep koleksiyonunu sağlamak için kullanılabilir. Tüm güvenlik belirteçleri sınıfından SecurityToken türetilir.
.NET 4.5 sürümünden başlayarak, Windows Identity Foundation (WIF) .NET Framework tamamen tümleştirilmiştir ve WIF tarafından sunulan sınıflar, kodunuzda güvenlik belirteçlerini işlemek için tercih edilen yöntemdir. WIF'de güvenlik belirteçleri, XML gösterimleri için seri hale getirilir ve seri durumdan çıkarılır ve temel sınıftan SecurityTokenHandler türetilen sınıflar kullanılarak doğrulanır. Belirtecin doğrulanması yalnızca belirtecin geçerli olduğundan emin olmakla kalmaz, aynı zamanda kimlik doğrulaması ve yetkilendirme kararları almak için kullanılabilecek bir ClaimsIdentity örneği belirteçten döndürmeyi de içerir. , ClaimsIdentity belirteç işleyicisinin ValidateToken yöntemi uygulaması tarafından hem belirteçte bulunan taleplerden hem de belirteç türünün kendisine ait taleplerden oluşturulur.
WIF, aşağıdaki güvenlik belirteci türleri için destekle birlikte gönderilir:
Saml2SecurityToken: SAML 2.0 Onaylamayı temel alan bir güvenlik belirtecini temsil eder. Bu belirteç türü genellikle bir WS-Trust veya WS-Federation güvenlik belirteci isteğine (RST) yanıt olarak bir güvenlik belirteci hizmeti tarafından verilir.
SamlSecurityToken: SAML 1.1 Onaylamayı temel alan bir güvenlik belirtecini temsil eder. Bu belirteç türü genellikle bir WS-Trust veya WS-Federation güvenlik belirteci isteğine (RST) yanıt olarak bir güvenlik belirteci hizmeti tarafından verilir.
KerberosRequestorSecurityToken ve KerberosReceiverSecurityToken: SOAP iletisinde alınan veya gönderilen Kerberos anahtarını temel alan bir güvenlik belirtecini temsil eder
RsaSecurityToken: RSA algoritması kullanılarak oluşturulan anahtarı temel alan bir güvenlik belirtecini temsil eder.
SessionSecurityToken: Oturum hakkında bilgi içeren bir güvenlik belirtecini temsil eder.
UserNameSecurityToken: Kullanıcı adını ve parolayı temel alan bir güvenlik belirtecini temsil eder.
WindowsSecurityToken: Bir Windows etki alanı veya kullanıcı hesabının kimliğini temel alan bir güvenlik belirtecini temsil eder.
X509SecurityToken: X.509 sertifikayı temel alan bir güvenlik belirtecini temsil eder.
X509WindowsSecurityToken: Bir Windows etki alanı kullanıcısı veya yerel bilgisayar kullanıcı hesabıyla eşlenen X.509 sertifikasını temel alan bir güvenlik belirtecini temsil eder.
Genel durumları işlemeye yardımcı olmak için iki diğer güvenlik belirteci sınıfı GenericXmlSecurityToken ve EncryptedSecurityTokenkullanılabilir.
Genel olarak ifade edilen güvenlik belirteçleri üç ana kategoriye ayrılır:
Şifreleme anahtarı malzemelerini taşıyan veya bunlara başvuran belirteçler. Örneğin RsaSecurityToken ve X509SecurityToken türleri genellikle bu amaçla kullanılır.
Kimliği doğrulanmış kullanıcılar için kimlik bilgilerini temsil eden belirteçler. Örneğin, UserNameSecurityTokenbir WindowsSecurityTokensertifika kullanılarak kimliği doğrulanmış bir kullanıcı söz konusu olduğunda , X509SecurityToken ve türleri.
WS-Trust veya WS-Federation protokolü kullanılarak bir güvenlik belirteci isteğine yanıt olarak bir güvenlik belirteci hizmeti (STS) tarafından verilen belirteçler. Bunlar genellikle bir
wst:RequestSecurityTokenResponse
XML parçasında döndürülür. Saml2SecurityToken ve SamlSecurityToken türleri genellikle bu belirteçleri temsil etmek için kullanılır.
Özel belirteç türü olan SessionSecurityToken, etkin veya pasif senaryolarda oturumları kullanırken sorumluyu yeniden oluşturmak için gereken bilgileri içerir.
Mevcut belirteç türlerine işlevsellik eklemek için, belirtecinize eklediğiniz yeni öğeleri desteklemek üzere belirli türden ve ilişkili belirteç işleyicisinden türetebilirsiniz. Yeni belirteç türleri için destek eklemek için doğrudan sınıfından SecurityToken türetebilirsiniz. Bunu yaptığınızda, sınıfından SecurityTokenHandler türeterek bir belirteç işleyici sınıfı da oluşturmanız gerekir. Belirtecinizin nasıl kullanılacağına bağlı olarak, sınıfından türeterek özel bir belirteç çözümleyicisi ve sınıfından IssuerTokenResolver türeterek SecurityKeyIdentifierClause bir veya daha fazla özel anahtar tanımlayıcı yan tümcesi türü oluşturmanız da gerekebilir.
Uygulayanlara Notlar
, , SecurityKeysValidFromve ValidTo özelliklerini geçersiz kılmalısınızId. CanCreateKeyIdentifierClause<T>(), CreateKeyIdentifierClause<T>(), MatchesKeyIdentifierClause(SecurityKeyIdentifierClause)ve ResolveKeyIdentifierClause(SecurityKeyIdentifierClause) yöntemlerinin tümü türündeki LocalIdKeyIdentifierClauseanahtar tanımlayıcılarını destekler. Türetilmiş sınıfınızdaki diğer anahtar tanımlayıcı türlerini desteklemek için bu yöntemleri geçersiz kılmanız gerekir.
Oluşturucular
SecurityToken() |
sınıfını başlatmak için türetilmiş sınıflardaki oluşturucular tarafından çağrılır SecurityToken . |
Özellikler
Id |
Güvenlik belirtecinin benzersiz tanımlayıcısını alır. |
SecurityKeys |
Güvenlik belirteci ile ilişkili şifreleme anahtarlarını alır. |
ValidFrom |
Bu güvenlik belirtecinin geçerli olduğu ilk anında alır. |
ValidTo |
Bu güvenlik belirtecinin geçerli olduğu son anlık zamanı alır. |
Yöntemler
CanCreateKeyIdentifierClause<T>() |
Bu güvenlik belirtecinin belirtilen anahtar tanımlayıcısını oluşturup oluşturamadığını gösteren bir değer alır. |
CreateKeyIdentifierClause<T>() |
Belirtilen anahtar tanımlayıcı yan tümcesini oluşturur. |
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MatchesKeyIdentifierClause(SecurityKeyIdentifierClause) |
Bu örneğin anahtar tanımlayıcısının belirtilen anahtar tanımlayıcısına çözümlenip çözümlenemeyeceğini belirten bir değer döndürür. |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ResolveKeyIdentifierClause(SecurityKeyIdentifierClause) |
Belirtilen anahtar tanımlayıcı yan tümcesinin anahtarını alır. |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |