SecurityTokenHandler.ReadToken Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Saat ditimpa di kelas turunan, deserialisasi XML yang ditentukan ke token jenis yang diproses oleh kelas turunan.
Overload
ReadToken(String) |
Saat ditimpa dalam kelas turunan, deserialisasi string yang ditentukan ke token jenis yang diproses oleh kelas turunan. |
ReadToken(XmlReader) |
Saat ditimpa di kelas turunan, deserialisasi XML yang direferensikan oleh pembaca XML yang ditentukan ke token jenis yang diproses oleh kelas turunan. |
ReadToken(XmlReader, SecurityTokenResolver) |
Saat ditimpa dalam kelas turunan, deserialisasi XML yang direferensikan oleh pembaca XML yang ditentukan ke token jenis yang diproses oleh kelas turunan dengan menggunakan pemecah masalah token yang ditentukan. |
ReadToken(String)
Saat ditimpa dalam kelas turunan, deserialisasi string yang ditentukan ke token jenis yang diproses oleh kelas turunan.
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
Parameter
- tokenString
- String
String yang akan dideserialisasi.
Mengembalikan
Token keamanan yang dideserialisasi dari string yang ditentukan.
Keterangan
Penting
Memanggil metode ini dengan data yang tidak tepercaya adalah risiko keamanan. Panggil metode ini hanya dengan data tepercaya. Untuk informasi selengkapnya, lihat Memvalidasi Semua Input.
Secara default metode ini memberikan NotImplementedException pengecualian.
Ambil alih metode ini untuk menyediakan fungsionalitas yang dapat mendeserialisasi token keamanan dari string. Jika Anda mengambil alih, metode ini, Anda juga harus mengambil SecurityTokenHandler.CanReadToken alih metode .
Berlaku untuk
ReadToken(XmlReader)
Saat ditimpa di kelas turunan, deserialisasi XML yang direferensikan oleh pembaca XML yang ditentukan ke token jenis yang diproses oleh kelas turunan.
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
Parameter
- reader
- XmlReader
Pembaca XML diposisikan di elemen awal token.
Mengembalikan
Token keamanan yang dideserialisasi dari XML.
Contoh
Kode berikut menunjukkan cara mengambil ReadToken alih metode untuk membaca token kustom dari pembaca XML yang ditentukan. Kode diambil dari Custom Token
sampel. Sampel ini menyediakan kelas kustom yang memungkinkan pemrosesan Simple Web Tokens (SWT). Untuk informasi tentang sampel ini dan sampel lain yang tersedia untuk WIF dan tempat mengunduhnya, lihat Indeks Sampel Kode WIF.
/// <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;
}
Keterangan
Penting
Memanggil metode ini dengan data yang tidak tepercaya adalah risiko keamanan. Panggil metode ini hanya dengan data tepercaya. Untuk informasi selengkapnya, lihat Memvalidasi Semua Input.
Secara default metode ini memberikan NotImplementedException pengecualian.
Ambil alih metode ini untuk menyediakan logika untuk mendeserialisasi token keamanan dari XML. Jika Anda mengambil alih metode ini, Anda juga harus mengambil SecurityTokenHandler.CanReadToken alih metode . Biasanya, di kelas turunan, jika metode tidak dapat mendeserialisasi token dari XML yang direferensikan, metode akan menampilkan XmlException.
Berlaku untuk
ReadToken(XmlReader, SecurityTokenResolver)
Saat ditimpa dalam kelas turunan, deserialisasi XML yang direferensikan oleh pembaca XML yang ditentukan ke token jenis yang diproses oleh kelas turunan dengan menggunakan pemecah masalah token yang ditentukan.
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
Parameter
- reader
- XmlReader
Pembaca XML diposisikan di elemen awal token.
- tokenResolver
- SecurityTokenResolver
Resolver token yang berisi token out-of-band dan cache.
Mengembalikan
Token keamanan yang dideserialisasi dari XML.
Keterangan
Penting
Memanggil metode ini dengan data yang tidak tepercaya adalah risiko keamanan. Panggil metode ini hanya dengan data tepercaya. Untuk informasi selengkapnya, lihat Memvalidasi Semua Input.
Implementasi default mengabaikan tokenResolver
parameter dan mendelegasikan panggilan ke SecurityTokenHandler.ReadToken metode .
Ambil alih metode ini untuk menyediakan logika untuk mendeserialisasi token keamanan dari XML. Jika Anda mengambil alih metode ini, Anda juga harus mengambil SecurityTokenHandler.CanReadToken alih metode . Biasanya, di kelas turunan, jika metode tidak dapat mendeserialisasi token dari XML yang direferensikan, metode akan menampilkan XmlException.