SecurityTokenHandler.ReadToken Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird die angegebene XML auf ein Token des Typs, der von der abgeleiteten Klasse verarbeitet wird, deserialisiert.
Überlädt
| Name | Beschreibung |
|---|---|
| ReadToken(String) |
Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird die angegebene Zeichenfolge auf ein Token des Typs, der von der abgeleiteten Klasse verarbeitet wird, deserialisiert. |
| ReadToken(XmlReader) |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird der XML-Code deserialisiert, auf den vom angegebenen XML-Reader verwiesen wird, auf ein Token des Typs, der von der abgeleiteten Klasse verarbeitet wird. |
| ReadToken(XmlReader, SecurityTokenResolver) |
Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird der XML-Code, auf den vom angegebenen XML-Reader verwiesen wird, auf ein Token des Typs festgelegt, der von der abgeleiteten Klasse mithilfe des angegebenen Tokenlösers verarbeitet wird. |
ReadToken(String)
Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird die angegebene Zeichenfolge auf ein Token des Typs, der von der abgeleiteten Klasse verarbeitet wird, deserialisiert.
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
Die Zeichenfolge, die deserialisiert werden soll.
Gibt zurück
Das Sicherheitstoken, das aus der angegebenen Zeichenfolge deserialisiert wurde.
Hinweise
Important
Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten ist ein Sicherheitsrisiko. Rufen Sie diese Methode nur mit vertrauenswürdigen Daten auf. Weitere Informationen finden Sie unter Überprüfen aller Eingaben.
Standardmäßig löst diese Methode eine NotImplementedException Ausnahme aus.
Überschreiben Sie diese Methode, um Funktionen bereitzustellen, die ein Sicherheitstoken aus einer Zeichenfolge deserialisieren können. Wenn Sie diese Methode außer Kraft setzen, sollten Sie die SecurityTokenHandler.CanReadToken Methode auch überschreiben.
Gilt für:
ReadToken(XmlReader)
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird der XML-Code deserialisiert, auf den vom angegebenen XML-Reader verwiesen wird, auf ein Token des Typs, der von der abgeleiteten Klasse verarbeitet wird.
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
Ein XML-Reader, der am Startelement des Tokens positioniert ist.
Gibt zurück
Das Sicherheitstoken, das aus dem XML deserialisiert wurde.
Beispiele
Der folgende Code zeigt, wie Die ReadToken Methode zum Lesen eines benutzerdefinierten Tokens aus dem angegebenen XML-Reader überschreibt. Der Code stammt aus dem Custom Token Beispiel. Dieses Beispiel enthält benutzerdefinierte Klassen, die die Verarbeitung einfacher Webtoken (SIMPLE Web Tokens, SWT) ermöglichen. Informationen zu diesem Beispiel und anderen Beispielen, die für WIF verfügbar sind und wo sie heruntergeladen werden sollen, finden Sie unter 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;
}
Hinweise
Important
Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten ist ein Sicherheitsrisiko. Rufen Sie diese Methode nur mit vertrauenswürdigen Daten auf. Weitere Informationen finden Sie unter Überprüfen aller Eingaben.
Standardmäßig löst diese Methode eine NotImplementedException Ausnahme aus.
Überschreiben Sie diese Methode, um die Logik zum Deserialisieren eines Sicherheitstokens aus XML bereitzustellen. Wenn Sie diese Methode außer Kraft setzen, sollten Sie die SecurityTokenHandler.CanReadToken Methode auch überschreiben. Wenn die Methode in abgeleiteten Klassen das Token aus dem referenzierten XML-Code nicht deserialisieren kann, wird ein XmlException.
Gilt für:
ReadToken(XmlReader, SecurityTokenResolver)
Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird der XML-Code, auf den vom angegebenen XML-Reader verwiesen wird, auf ein Token des Typs festgelegt, der von der abgeleiteten Klasse mithilfe des angegebenen Tokenlösers verarbeitet wird.
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
Ein XML-Reader, der am Startelement des Tokens positioniert ist.
- tokenResolver
- SecurityTokenResolver
Ein Tokenlöser, der Out-of-Band- und zwischengespeicherte Token enthält.
Gibt zurück
Das Sicherheitstoken, das aus dem XML deserialisiert wurde.
Hinweise
Important
Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten ist ein Sicherheitsrisiko. Rufen Sie diese Methode nur mit vertrauenswürdigen Daten auf. Weitere Informationen finden Sie unter Überprüfen aller Eingaben.
Die Standardimplementierung ignoriert den tokenResolver Parameter und delegiert den Aufruf der SecurityTokenHandler.ReadToken Methode.
Überschreiben Sie diese Methode, um die Logik zum Deserialisieren eines Sicherheitstokens aus XML bereitzustellen. Wenn Sie diese Methode außer Kraft setzen, sollten Sie die SecurityTokenHandler.CanReadToken Methode auch überschreiben. Wenn die Methode in abgeleiteten Klassen das Token aus dem referenzierten XML-Code nicht deserialisieren kann, wird ein XmlException.