SecurityTokenHandler.ReadToken Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
När den åsidosättas i en härledd klass deserialiserar den angivna XML:en till en token av den typ som bearbetas av den härledda klassen.
Överlagringar
| Name | Description |
|---|---|
| ReadToken(String) |
När den åsidosättas i en härledd klass deserialiserar den angivna strängen till en token av den typ som bearbetas av den härledda klassen. |
| ReadToken(XmlReader) |
När den åsidosättas i en härledd klass deserialiserar xml-koden som refereras av den angivna XML-läsaren till en token av den typ som bearbetas av den härledda klassen. |
| ReadToken(XmlReader, SecurityTokenResolver) |
När den åsidosättas i en härledd klass, deserialiserar XML som refereras av den angivna XML-läsaren till en token av den typ som bearbetas av den härledda klassen med hjälp av den angivna tokenlösaren. |
ReadToken(String)
När den åsidosättas i en härledd klass deserialiserar den angivna strängen till en token av den typ som bearbetas av den härledda klassen.
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
Parametrar
- tokenString
- String
Strängen som ska deserialiseras.
Returer
Säkerhetstoken som deserialiserades från den angivna strängen.
Kommentarer
Important
Det är en säkerhetsrisk att anropa den här metoden med data som inte är betrodda. Anropa endast den här metoden med betrodda data. För mer information, se Verifiera alla indata.
Som standard utlöser den här metoden ett NotImplementedException undantag.
Åsidosätt den här metoden för att tillhandahålla funktioner som kan deserialisera en säkerhetstoken från en sträng. Om du åsidosätter den här metoden bör du också åsidosätta SecurityTokenHandler.CanReadToken metoden.
Gäller för
ReadToken(XmlReader)
När den åsidosättas i en härledd klass deserialiserar xml-koden som refereras av den angivna XML-läsaren till en token av den typ som bearbetas av den härledda klassen.
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
Parametrar
- reader
- XmlReader
En XML-läsare placerad i startelementet för token.
Returer
Säkerhetstoken som deserialiserades från XML-koden.
Exempel
Följande kod visar hur du åsidosätter ReadToken metoden för att läsa en anpassad token från den angivna XML-läsaren. Koden hämtas från exemplet Custom Token . Det här exemplet innehåller anpassade klasser som möjliggör bearbetning av enkla webbtoken (SWT). Information om det här exemplet och andra exempel som är tillgängliga för WIF och var du kan ladda ned dem finns i WIF Code Sample Index.
/// <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;
}
Kommentarer
Important
Det är en säkerhetsrisk att anropa den här metoden med data som inte är betrodda. Anropa endast den här metoden med betrodda data. För mer information, se Verifiera alla indata.
Som standard utlöser den här metoden ett NotImplementedException undantag.
Åsidosätt den här metoden för att ange logiken för att deserialisera en säkerhetstoken från XML. Om du åsidosätter den här metoden bör du också åsidosätta SecurityTokenHandler.CanReadToken metoden. Om metoden i härledda klasser vanligtvis inte kan deserialisera token från den refererade XML-koden genererar den en XmlException.
Gäller för
ReadToken(XmlReader, SecurityTokenResolver)
När den åsidosättas i en härledd klass, deserialiserar XML som refereras av den angivna XML-läsaren till en token av den typ som bearbetas av den härledda klassen med hjälp av den angivna tokenlösaren.
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
Parametrar
- reader
- XmlReader
En XML-läsare placerad i startelementet för token.
- tokenResolver
- SecurityTokenResolver
En tokenlösare som innehåller out-of-band och cachelagrade token.
Returer
Säkerhetstoken som deserialiserades från XML-koden.
Kommentarer
Important
Det är en säkerhetsrisk att anropa den här metoden med data som inte är betrodda. Anropa endast den här metoden med betrodda data. För mer information, se Verifiera alla indata.
Standardimplementeringen ignorerar parametern tokenResolver och delegerar anropet SecurityTokenHandler.ReadToken till metoden.
Åsidosätt den här metoden för att ange logiken för att deserialisera en säkerhetstoken från XML. Om du åsidosätter den här metoden bör du också åsidosätta SecurityTokenHandler.CanReadToken metoden. Om metoden i härledda klasser vanligtvis inte kan deserialisera token från den refererade XML-koden genererar den en XmlException.