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.
Deserialisiert bei Überschreibung in einer abgeleiteten Klasse das angegebene XML in ein Token des Typs, der von der abgeleiteten Klasse verarbeitet wird.
Überlädt
ReadToken(String) |
Deserialisiert bei Überschreibung in einer abgeleiteten Klasse die angegebene Zeichenfolge in ein Token des Typs, der von der abgeleiteten Klasse verarbeitet wird. |
ReadToken(XmlReader) |
Deserialisiert bei Überschreibung in einer abgeleiteten Klasse das XML, auf das durch den angegebenen XML-Reader verwiesen wird, in ein Token des Typs, der von der abgeleiteten Klasse verarbeitet wird. |
ReadToken(XmlReader, SecurityTokenResolver) |
Deserialisiert bei Überschreibung in einer abgeleiteten Klasse das XML, auf das durch den angegebenen XML-Reader verwiesen wird, in ein Token des Typs, der von dieser Klasse unter Verwendung des angegebenen Tokenresolvers verarbeitet wird. |
ReadToken(String)
Deserialisiert bei Überschreibung in einer abgeleiteten Klasse die angegebene Zeichenfolge in ein Token des Typs, der von der abgeleiteten Klasse verarbeitet wird.
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 zu deserialisierende Zeichenfolge.
Gibt zurück
Der Sicherheitstoken, der von der angegebenen Zeichenfolge deserialisiert wurde.
Hinweise
Wichtig
Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten stellt ein Sicherheitsrisiko dar. 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 Ausnahme aus NotImplementedException .
Überschreiben Sie diese Methode, um Funktionen bereitzustellen, die ein Sicherheitstoken aus einer Zeichenfolge deserialisieren können. Wenn Sie diese Methode überschreiben, sollten Sie auch die SecurityTokenHandler.CanReadToken -Methode überschreiben.
Gilt für:
ReadToken(XmlReader)
Deserialisiert bei Überschreibung in einer abgeleiteten Klasse das XML, auf das durch den angegebenen XML-Reader verwiesen wird, in 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 Start-Element des Tokens positioniert ist.
Gibt zurück
Das Sicherheitstoken, das aus der XML deserialisiert wurde.
Beispiele
Der folgende Code zeigt, wie Sie die ReadToken -Methode überschreiben, um ein benutzerdefiniertes Token aus dem angegebenen XML-Reader zu lesen. Der Code wird aus dem Custom Token
Beispiel entnommen. Dieses Beispiel stellt benutzerdefinierte Klassen bereit, die die Verarbeitung von Einfachen Webtoken (SWT) ermöglichen. Informationen zu diesem Beispiel und zu anderen für WIF verfügbaren Beispielen und zu ihren Downloadmöglichkeiten finden Sie unter WIF-Codebeispielindex.
/// <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
Wichtig
Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten stellt ein Sicherheitsrisiko dar. 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 Ausnahme aus NotImplementedException .
Überschreiben Sie diese Methode, um die Logik zum Deserialisieren eines Sicherheitstokens aus XML bereitzustellen. Wenn Sie diese Methode überschreiben, sollten Sie auch die SecurityTokenHandler.CanReadToken -Methode überschreiben. Wenn die Methode in abgeleiteten Klassen das Token aus dem XML-Verweis nicht deserialisieren kann, löst sie in der Regel einen aus XmlException.
Gilt für:
ReadToken(XmlReader, SecurityTokenResolver)
Deserialisiert bei Überschreibung in einer abgeleiteten Klasse das XML, auf das durch den angegebenen XML-Reader verwiesen wird, in ein Token des Typs, der von dieser Klasse unter Verwendung des angegebenen Tokenresolvers 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 Start-Element des Tokens positioniert ist.
- tokenResolver
- SecurityTokenResolver
Ein Tokenresolver, der die Out-of-Band und zwischengespeicherten Token enthält.
Gibt zurück
Das Sicherheitstoken, das aus der XML deserialisiert wurde.
Hinweise
Wichtig
Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten stellt ein Sicherheitsrisiko dar. 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 an die SecurityTokenHandler.ReadToken -Methode.
Überschreiben Sie diese Methode, um die Logik zum Deserialisieren eines Sicherheitstokens aus XML bereitzustellen. Wenn Sie diese Methode überschreiben, sollten Sie auch die SecurityTokenHandler.CanReadToken -Methode überschreiben. Wenn die Methode in abgeleiteten Klassen das Token aus dem XML-Verweis nicht deserialisieren kann, löst sie in der Regel einen aus XmlException.