Share via


SecurityTokenHandler.ReadToken Yöntem

Tanım

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen XML'i türetilen sınıf tarafından işlenen türün belirtecine seri durumdan çıkartır.

Aşırı Yüklemeler

ReadToken(String)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen dizeyi türetilmiş sınıf tarafından işlenen türün belirtecine seri durumdan çıkartır.

ReadToken(XmlReader)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen XML okuyucusu tarafından başvuruda bulunan XML'yi türetilmiş sınıf tarafından işlenen türün belirtecine seri durumdan çıkartır.

ReadToken(XmlReader, SecurityTokenResolver)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen XML okuyucusu tarafından başvuruda bulunan XML'yi, belirtilen belirteç çözümleyicisi kullanılarak türetilmiş sınıf tarafından işlenen türdeki bir belirtece seri durumdan çıkartır.

ReadToken(String)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen dizeyi türetilmiş sınıf tarafından işlenen türün belirtecine seri durumdan çıkartır.

public:
 virtual System::IdentityModel::Tokens::SecurityToken ^ ReadToken(System::String ^ tokenString);
public virtual System.IdentityModel.Tokens.SecurityToken ReadToken (string tokenString);
abstract member ReadToken : string -> System.IdentityModel.Tokens.SecurityToken
override this.ReadToken : string -> System.IdentityModel.Tokens.SecurityToken
Public Overridable Function ReadToken (tokenString As String) As SecurityToken

Parametreler

tokenString
String

Seri durumdan çıkarılacak dize.

Döndürülenler

Belirtilen dizeden seri durumdan çıkarılmış güvenlik belirteci.

Açıklamalar

Önemli

Bu yöntemi güvenilmeyen verilerle çağırmak bir güvenlik riskidir. Bu yöntemi yalnızca güvenilen verilerle çağır. Daha fazla bilgi için bkz. Tüm Girişleri Doğrulama.

Varsayılan olarak bu yöntem bir NotImplementedException özel durum oluşturur.

Bir dizeden bir güvenlik belirtecini seri durumdan çıkarabilecek işlevler sağlamak için bu yöntemi geçersiz kılın. Bu yöntemi geçersiz kılarsanız, yöntemini de geçersiz kılmalısınız SecurityTokenHandler.CanReadToken .

Şunlara uygulanır

ReadToken(XmlReader)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen XML okuyucusu tarafından başvuruda bulunan XML'yi türetilmiş sınıf tarafından işlenen türün belirtecine seri durumdan çıkartır.

public:
 virtual System::IdentityModel::Tokens::SecurityToken ^ ReadToken(System::Xml::XmlReader ^ reader);
public virtual System.IdentityModel.Tokens.SecurityToken ReadToken (System.Xml.XmlReader reader);
abstract member ReadToken : System.Xml.XmlReader -> System.IdentityModel.Tokens.SecurityToken
override this.ReadToken : System.Xml.XmlReader -> System.IdentityModel.Tokens.SecurityToken
Public Overridable Function ReadToken (reader As XmlReader) As SecurityToken

Parametreler

reader
XmlReader

Belirtecin başlangıç öğesinde konumlandırılmış bir XML okuyucu.

Döndürülenler

XML'den seri durumdan çıkarılmış güvenlik belirteci.

Örnekler

Aşağıdaki kod, belirtilen XML okuyucudan özel bir belirteci okumak için yönteminin nasıl geçersiz kılınmasını ReadToken gösterir. Kod örnekten Custom Token alınır. Bu örnek, Basit Web Belirteçlerinin (SWT) işlenmesini sağlayan özel sınıflar sağlar. 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.

/// <summary>
/// Reads a serialized token and converts it into a <see cref="SecurityToken"/>.
/// </summary>
/// <param name="reader">An XML reader positioned at the token's start element.</param>
/// <returns>The parsed form of the token.</returns>
public override SecurityToken ReadToken( XmlReader reader )
{
    if ( reader == null )
    {
        throw new ArgumentNullException( "reader" );
    }

    XmlDictionaryReader dictionaryReader = XmlDictionaryReader.CreateDictionaryReader(reader);

    byte[] binaryData;
    string encoding = dictionaryReader.GetAttribute( EncodingType );
    if ( encoding == null || encoding == Base64EncodingType )
    {
        dictionaryReader.Read();
        binaryData = dictionaryReader.ReadContentAsBase64();
    }
    else
    {
        throw new SecurityTokenException(
            "Cannot read SecurityToken as its encoding is" + encoding + ". Expected a BinarySecurityToken with base64 encoding.");
    }
    
    string serializedToken = Encoding.UTF8.GetString(binaryData);

    return ReadSecurityTokenFromString(serializedToken);
}
/// <summary>
/// Parse the string token and generates a <see cref="SecurityToken"/>.
/// </summary>
/// <param name="serializedToken">The serialized form of the token received.</param>
/// <returns>The parsed form of the token.</returns>
protected SecurityToken ReadSecurityTokenFromString( string serializedToken )
{
    if (String.IsNullOrEmpty(serializedToken))
    {
        throw new ArgumentException("The parameter 'serializedToken' cannot be null or empty string.");
    }

    // Create a collection of SWT name value pairs
    NameValueCollection properties = ParseToken( serializedToken );
    SimpleWebToken swt = new SimpleWebToken( properties, serializedToken );

    return swt;
}
/// <summary>
/// Parses the token into a collection.
/// </summary>
/// <param name="encodedToken">The serialized token.</param>
/// <returns>A colleciton of all name-value pairs from the token.</returns>
NameValueCollection ParseToken( string encodedToken )
{
    if ( String.IsNullOrEmpty( encodedToken ) )
    {
        throw new ArgumentException( "The parameter 'encodedToken' cannot be null or empty string.");
    }

    NameValueCollection keyValuePairs = new NameValueCollection();
    foreach ( string nameValue in encodedToken.Split( ParameterSeparator ) )
    {
        string[] keyValueArray = nameValue.Split( '=' );

        if ( ( keyValueArray.Length < 2 ) || String.IsNullOrEmpty( keyValueArray[0] ) )
        {
            throw new SecurityTokenException("The incoming token was not in an expected format.");
        }

        // Names must be decoded for the claim type case
        string key = HttpUtility.UrlDecode( keyValueArray[0].Trim() );

        // remove any unwanted "
        string value = HttpUtility.UrlDecode( keyValueArray[1].Trim().Trim( '"' ) ); 
        keyValuePairs.Add( key, value );
    }

    return keyValuePairs;
}

Açıklamalar

Önemli

Bu yöntemi güvenilmeyen verilerle çağırmak bir güvenlik riskidir. Bu yöntemi yalnızca güvenilen verilerle çağır. Daha fazla bilgi için bkz. Tüm Girişleri Doğrulama.

Varsayılan olarak bu yöntem bir NotImplementedException özel durum oluşturur.

XML'den bir güvenlik belirtecini seri durumdan çıkarma mantığını sağlamak için bu yöntemi geçersiz kılın. Bu yöntemi geçersiz kılarsanız, yöntemini de geçersiz kılmalısınız SecurityTokenHandler.CanReadToken . Genellikle türetilmiş sınıflarda yöntemi başvurulan XML'den belirteci seri durumdan çıkaramazsa bir XmlExceptionoluşturur.

Şunlara uygulanır

ReadToken(XmlReader, SecurityTokenResolver)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen XML okuyucusu tarafından başvuruda bulunan XML'yi, belirtilen belirteç çözümleyicisi kullanılarak türetilmiş sınıf tarafından işlenen türdeki bir belirtece seri durumdan çıkartır.

public:
 virtual System::IdentityModel::Tokens::SecurityToken ^ ReadToken(System::Xml::XmlReader ^ reader, System::IdentityModel::Selectors::SecurityTokenResolver ^ tokenResolver);
public virtual System.IdentityModel.Tokens.SecurityToken ReadToken (System.Xml.XmlReader reader, System.IdentityModel.Selectors.SecurityTokenResolver tokenResolver);
abstract member ReadToken : System.Xml.XmlReader * System.IdentityModel.Selectors.SecurityTokenResolver -> System.IdentityModel.Tokens.SecurityToken
override this.ReadToken : System.Xml.XmlReader * System.IdentityModel.Selectors.SecurityTokenResolver -> System.IdentityModel.Tokens.SecurityToken
Public Overridable Function ReadToken (reader As XmlReader, tokenResolver As SecurityTokenResolver) As SecurityToken

Parametreler

reader
XmlReader

Belirtecin başlangıç öğesinde konumlandırılmış bir XML okuyucu.

tokenResolver
SecurityTokenResolver

Bant dışı ve önbelleğe alınmış belirteçler içeren bir belirteç çözümleyicisi.

Döndürülenler

XML'den seri durumdan çıkarılmış güvenlik belirteci.

Açıklamalar

Önemli

Bu yöntemi güvenilmeyen verilerle çağırmak bir güvenlik riskidir. Bu yöntemi yalnızca güvenilen verilerle çağır. Daha fazla bilgi için bkz. Tüm Girişleri Doğrulama.

Varsayılan uygulama parametresini tokenResolver yoksayar ve yöntemine çağrıyı SecurityTokenHandler.ReadToken temsilci olarak verir.

XML'den bir güvenlik belirtecini seri durumdan çıkarma mantığını sağlamak için bu yöntemi geçersiz kılın. Bu yöntemi geçersiz kılarsanız, yöntemini de geçersiz kılmalısınız SecurityTokenHandler.CanReadToken . Genellikle türetilmiş sınıflarda yöntemi başvurulan XML'den belirteci seri durumdan çıkaramazsa bir XmlExceptionoluşturur.

Şunlara uygulanır