SecurityTokenHandler.ReadToken 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
파생 클래스에서 재정의되는 경우 지정된 XML을 파생 클래스에서 처리된 형식의 토큰으로 역직렬화합니다.
오버로드
| Name | Description |
|---|---|
| ReadToken(String) |
파생 클래스에서 재정의되는 경우 지정된 문자열을 파생 클래스에서 처리된 형식의 토큰으로 역직렬화합니다. |
| ReadToken(XmlReader) |
파생 클래스에서 재정의되는 경우 지정된 XML 판독기에서 참조하는 XML을 파생 클래스에서 처리된 형식의 토큰으로 역직렬화합니다. |
| ReadToken(XmlReader, SecurityTokenResolver) |
파생 클래스에서 재정의되는 경우 지정된 토큰 확인자를 사용하여 지정된 XML 판독기에서 참조하는 XML을 파생 클래스에서 처리한 형식의 토큰으로 역직렬화합니다. |
ReadToken(String)
파생 클래스에서 재정의되는 경우 지정된 문자열을 파생 클래스에서 처리된 형식의 토큰으로 역직렬화합니다.
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
매개 변수
- tokenString
- String
역직렬화할 문자열입니다.
반품
지정된 문자열에서 역직렬화된 보안 토큰입니다.
설명
Important
신뢰할 수 없는 데이터로 이 메서드를 호출하는 것은 보안 위험입니다. 신뢰할 수 있는 데이터로만 이 메서드를 호출합니다. 자세한 내용은 모든 입력 유효성 검사참조하세요.
기본적으로 이 메서드는 예외를 NotImplementedException throw합니다.
문자열에서 보안 토큰을 역직렬화할 수 있는 기능을 제공하려면 이 메서드를 재정의합니다. 이 메서드를 재정의하는 경우 메서드도 재정의 SecurityTokenHandler.CanReadToken 해야 합니다.
적용 대상
ReadToken(XmlReader)
파생 클래스에서 재정의되는 경우 지정된 XML 판독기에서 참조하는 XML을 파생 클래스에서 처리된 형식의 토큰으로 역직렬화합니다.
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
매개 변수
- reader
- XmlReader
토큰의 시작 요소에 배치된 XML 판독기입니다.
반품
XML에서 역직렬화된 보안 토큰입니다.
예제
다음 코드는 지정된 XML 판독기에서 사용자 지정 토큰을 읽도록 메서드를 재정 ReadToken 의하는 방법을 보여줍니다. 코드는 샘플에서 Custom Token 가져옵니다. 이 샘플에서는 SWT(Simple Web Tokens)를 처리할 수 있는 사용자 지정 클래스를 제공합니다. WIF에 사용할 수 있는 이 샘플 및 기타 샘플 및 다운로드 위치에 대한 자세한 내용은 WIF 코드 샘플 인덱스(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;
}
설명
Important
신뢰할 수 없는 데이터로 이 메서드를 호출하는 것은 보안 위험입니다. 신뢰할 수 있는 데이터로만 이 메서드를 호출합니다. 자세한 내용은 모든 입력 유효성 검사참조하세요.
기본적으로 이 메서드는 예외를 NotImplementedException throw합니다.
XML에서 보안 토큰을 역직렬화하는 논리를 제공하도록 이 메서드를 재정의합니다. 이 메서드를 재정의하는 경우 메서드도 재정의 SecurityTokenHandler.CanReadToken 해야 합니다. 일반적으로 파생 클래스에서 메서드가 참조된 XML에서 토큰을 역직렬화할 수 없는 경우 throw됩니다 XmlException.
적용 대상
ReadToken(XmlReader, SecurityTokenResolver)
파생 클래스에서 재정의되는 경우 지정된 토큰 확인자를 사용하여 지정된 XML 판독기에서 참조하는 XML을 파생 클래스에서 처리한 형식의 토큰으로 역직렬화합니다.
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
매개 변수
- reader
- XmlReader
토큰의 시작 요소에 배치된 XML 판독기입니다.
- tokenResolver
- SecurityTokenResolver
대역 외 및 캐시된 토큰을 포함하는 토큰 확인자입니다.
반품
XML에서 역직렬화된 보안 토큰입니다.
설명
Important
신뢰할 수 없는 데이터로 이 메서드를 호출하는 것은 보안 위험입니다. 신뢰할 수 있는 데이터로만 이 메서드를 호출합니다. 자세한 내용은 모든 입력 유효성 검사참조하세요.
기본 구현은 매개 변수를 tokenResolver 무시하고 메서드에 대한 호출을 SecurityTokenHandler.ReadToken 위임합니다.
XML에서 보안 토큰을 역직렬화하는 논리를 제공하도록 이 메서드를 재정의합니다. 이 메서드를 재정의하는 경우 메서드도 재정의 SecurityTokenHandler.CanReadToken 해야 합니다. 일반적으로 파생 클래스에서 메서드가 참조된 XML에서 토큰을 역직렬화할 수 없는 경우 throw됩니다 XmlException.