From 222f0f2570d31884512a0b37c4a098bcb8b8c7dd Mon Sep 17 00:00:00 2001 From: JORGE LUIS CAUDILLO ESPARZA Date: Wed, 29 Jul 2020 13:03:02 -0700 Subject: [PATCH] --- Bin/System.IdentityModel.Tokens.Jwt.dll | Bin 0 -> 90320 bytes ...ystem.IdentityModel.Tokens.Jwt.dll.refresh | Bin 0 -> 274 bytes Bin/System.IdentityModel.Tokens.Jwt.xml | 1433 +++++++++++++++++ 3 files changed, 1433 insertions(+) create mode 100644 Bin/System.IdentityModel.Tokens.Jwt.dll create mode 100644 Bin/System.IdentityModel.Tokens.Jwt.dll.refresh create mode 100644 Bin/System.IdentityModel.Tokens.Jwt.xml diff --git a/Bin/System.IdentityModel.Tokens.Jwt.dll b/Bin/System.IdentityModel.Tokens.Jwt.dll new file mode 100644 index 0000000000000000000000000000000000000000..bb9aec48743ab4b3b4155e0636531d4dc9c2bfa6 GIT binary patch literal 90320 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

-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 literal 0 HcmV?d00001 diff --git a/Bin/System.IdentityModel.Tokens.Jwt.dll.refresh b/Bin/System.IdentityModel.Tokens.Jwt.dll.refresh new file mode 100644 index 0000000000000000000000000000000000000000..e775ba7e5480dc048e4779c47dd367d4040e9f33 GIT binary patch literal 274 zcmbu2K?=e!5JlgKilBnH?MlIwx+{pbMN4B9+akTZ`jRV1n3>G~FZth3&YFTFJvA?T zLC%?xiiY5MsPy(xx0ETIHBXhuM!%E~+>$bIV#QMDsan$7ukw-IGdTyhI~f}jYC8AE pn%Mb1Dnakyy-jZKw&g96`D@19nx))^i?fp&Sfs>%|F6sr`~djbH8}tP literal 0 HcmV?d00001 diff --git a/Bin/System.IdentityModel.Tokens.Jwt.xml b/Bin/System.IdentityModel.Tokens.Jwt.xml new file mode 100644 index 000000000..808377f8e --- /dev/null +++ b/Bin/System.IdentityModel.Tokens.Jwt.xml @@ -0,0 +1,1433 @@ + + + + System.IdentityModel.Tokens.Jwt + + + +

+ Defines the inbound and outbound mapping for claim claim types from jwt to .net claim + + + + + Initializes static members of the class. + + + + + Gets the InboundClaimTypeMap used by JwtSecurityTokenHandler when producing claims from jwt. + + + + + Gets the OutboundClaimTypeMap is used by JwtSecurityTokenHandler to shorten claim types when creating a jwt. + + + + + Constants for Json Web tokens. + + + + + A URI that represents the JSON XML data type. + + When mapping json to .Net Claim(s), if the value was not a string (or an enumeration of strings), the ClaimValue will serialized using the current JSON serializer, a property will be added with the .Net type and the ClaimTypeValue will be set to 'JsonClaimValueType'. + + + + A URI that represents the JSON array XML data type. + + When mapping json to .Net Claim(s), if the value was not a string (or an enumeration of strings), the ClaimValue will serialized using the current JSON serializer, a property will be added with the .Net type and the ClaimTypeValue will be set to 'JsonClaimValueType'. + + + + A URI that represents the JSON null data type + + When mapping json to .Net Claim(s), we use empty string to represent the claim value and set the ClaimValueType to JsonNull + + + + Delegate that can be set on to control serialization of objects into JSON. + + Object to serialize + The serialized object. + + + + Delegate that can be set on to control deserialization JSON into objects. + + JSON to deserialize. + Type expected. + The deserialized object. + + + + Dictionary extensions for serializations + + + + + Gets or sets a to use when serializing objects to JSON. + + If 'value' is null. + + + + Gets or sets a to use when deserializing objects from JSON. + + If 'value' is null. + + + + Serializes an object to JSON. + + The object to serialize + The object as JSON. + + + + Deserialzes JSON into an instance of type T. + + The object type. + The JSON to deserialze. + A new instance of type T. + + + + Deserialzes JSON into an instance of . + + The JSON to deserialze. + A new instance . + + + + Deserialzes JSON into an instance of . + + The JSON to deserialze. + A new instance . + + + + Constants for Json Web tokens. + + + + + Short header type. + + + + + Long header type. + + + + + Short token type. + + + + + Long token type. + + + + + JWS - Token format: 'header.payload.signature'. Signature is optional, but '.' is required. + + + + + JWE - Token format: 'protectedheader.encryptedkey.iv.cyphertext.authenticationtag'. + + + + + The number of parts in a JWE token. + + + + + The number of parts in a JWS token. + + + + + The maximum number of parts in a JWT. + + + + + JWE header alg indicating a shared symmetric key is directly used as CEK. + + + + + Initializes a new instance of which contains JSON objects representing the cryptographic operations applied to the JWT and optionally any additional properties of the JWT. + The member names within the JWT Header are referred to as Header Parameter Names. + These names MUST be unique and the values must be (s). The corresponding values are referred to as Header Parameter Values. + + + + + Initializes a new instance of the class. Default string comparer . + + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, SigningCredentials.Algorithm } } + + used creating a JWS Compact JSON. + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, EncryptingCredentials.Alg }, { enc, EncryptingCredentials.Enc } } + + used creating a JWE Compact JSON. + If 'encryptingCredentials' is null. + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, SigningCredentials.Algorithm } } + + used when creating a JWS Compact JSON. + provides a mapping for the 'alg' value so that values are within the JWT namespace. + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, SigningCredentials.Algorithm } } + + used when creating a JWS Compact JSON. + provides a mapping for the 'alg' value so that values are within the JWT namespace. + If 'signingCredentials' is null. + + + + Gets the signature algorithm that was used to create the signature. + + If the signature algorithm is not found, null is returned. + + + + Gets the content mime type (Cty) of the token. + + If the content mime type is not found, null is returned. + + + + Gets the encryption algorithm (Enc) of the token. + + If the content mime type is not found, null is returned. + + + + Gets the passed in the constructor. + + This value may be null. + + + + Gets the iv of symmetric key wrap. + + + + + Gets the key identifier for the security key used to sign the token + + + + + Gets the passed in the constructor. + + This value may be null. + + + + Gets the mime type (Typ) of the token. + + If the mime type is not found, null is returned. + + + + Gets the thumbprint of the certificate used to sign the token + + + + + Deserializes Base64UrlEncoded JSON into a instance. + + Base64url encoded JSON to deserialize. + An instance of . + Use to customize JSON serialization. + + + + Encodes this instance as Base64UrlEncoded JSON. + + Base64UrlEncoded JSON. + Use to customize JSON serialization. + + + + Deserialzes JSON into a instance. + + The JSON to deserialize. + An instance of . + Use to customize JSON serialization. + + + + Gets a standard claim from the header. + A standard claim is either a string or a value of another type serialized in JSON format. + + The key of the claim. + The standard claim string; or null if not found. + + + + Serializes this instance to JSON. + + This instance as JSON. + Use to customize JSON serialization. + + + + List of header parameter names see: http://tools.ietf.org/html/rfc7519#section-5. + + + + + see:https://tools.ietf.org/html/rfc7515#section-4.1.1 + + + + + see:https://tools.ietf.org/html/rfc7515#section-4.1.10 + also:https://tools.ietf.org/html/rfc7519#section-5.2 + + + + + see:https://tools.ietf.org/html/rfc7516#section-4.1.2 + + + + + see:https://tools.ietf.org/html/rfc7518#section-4.7.1.1 + + + + + see:https://tools.ietf.org/html/rfc7515#section-4.1.2 + + + + + see:https://tools.ietf.org/html/rfc7515#section-4.1.3 + + + + + see:https://tools.ietf.org/html/rfc7515#section-4.1.4 + + + + + see:https://tools.ietf.org/html/rfc7515#section-4.1.9 + also:https://tools.ietf.org/html/rfc7519#section-5.1 + + + + + see:https://tools.ietf.org/html/rfc7515#section-4.1.6 + + + + + see:https://tools.ietf.org/html/rfc7515#page-12 + + + + + see:https://tools.ietf.org/html/rfc7515#section-4.1.5 + + + + + see:https://tools.ietf.org/html/rfc7516#section-4.1.3 + + + + + Initializes a new instance of which contains JSON objects representing the claims contained in the JWT. Each claim is a JSON object of the form { Name, Value }. + + + + + Initializes a new instance of the class with no claims. Default string comparer . + Creates a empty + + + + + Initializes a new instance of the class with . Default string comparer . + The claims to add. + + + + + Initializes a new instance of the class with claims added for each parameter specified. Default string comparer . + + If this value is not null, a { iss, 'issuer' } claim will be added. + If this value is not null, a { aud, 'audience' } claim will be added + If this value is not null then for each a { 'Claim.Type', 'Claim.Value' } is added. If duplicate claims are found then a { 'Claim.Type', List<object> } will be created to contain the duplicate values. + If notbefore.HasValue is 'true' a { nbf, 'value' } claim is added. + If expires.HasValue is 'true' a { exp, 'value' } claim is added. + + + + Initializes a new instance of the class with claims added for each parameter specified. Default string comparer . + + If this value is not null, a { iss, 'issuer' } claim will be added. + If this value is not null, a { aud, 'audience' } claim will be added + If this value is not null then for each a { 'Claim.Type', 'Claim.Value' } is added. If duplicate claims are found then a { 'Claim.Type', List<object> } will be created to contain the duplicate values. + If notbefore.HasValue is 'true' a { nbf, 'value' } claim is added. + If expires.HasValue is 'true' a { exp, 'value' } claim is added. + If issuedAt.HasValue is 'true' a { iat, 'value' } claim is added. + Comparison is set to + The 4 parameters: 'issuer', 'audience', 'notBefore', 'expires' take precednece over (s) in 'claims'. The values in 'claims' will be overridden. + If 'expires' <= 'notbefore'. + + + + Gets the 'value' of the 'actor' claim { actort, 'value' }. + + If the 'actor' claim is not found, null is returned. + + + + Gets the 'value' of the 'acr' claim { acr, 'value' }. + + If the 'acr' claim is not found, null is returned. + + + + Gets the 'value' of the 'amr' claim { amr, 'value' } as list of strings. + + If the 'amr' claim is not found, an empty enumerable is returned. + + + + Gets the 'value' of the 'auth_time' claim { auth_time, 'value' }. + + If the 'auth_time' claim is not found OR could not be converted to , null is returned. + + + + Gets the 'value' of the 'audience' claim { aud, 'value' } as a list of strings. + + If the 'audience' claim is not found, an empty enumerable is returned. + + + + Gets the 'value' of the 'azp' claim { azp, 'value' }. + + If the 'azp' claim is not found, null is returned. + + + + Gets 'value' of the 'c_hash' claim { c_hash, 'value' }. + + If the 'c_hash' claim is not found, null is returned. + + + + Gets the 'value' of the 'expiration' claim { exp, 'value' }. + + If the 'expiration' claim is not found OR could not be converted to , null is returned. + + + + Gets the 'value' of the 'JWT ID' claim { jti, 'value' }. + + If the 'JWT ID' claim is not found, null is returned. + + + + Gets the 'value' of the 'Issued At' claim { iat, 'value' }. + + If the 'Issued At' claim is not found OR cannot be converted to null is returned. + + + + Gets the 'value' of the 'issuer' claim { iss, 'value' }. + + If the 'issuer' claim is not found, null is returned. + + + + Gets the 'value' of the 'expiration' claim { nbf, 'value' }. + + If the 'notbefore' claim is not found OR could not be converted to , null is returned. + + + + Gets the 'value' of the 'nonce' claim { nonce, 'value' }. + + If the 'nonce' claim is not found, null is returned. + + + + Gets the 'value' of the 'subject' claim { sub, 'value' }. + + If the 'subject' claim is not found, null is returned. + + + + Gets the 'value' of the 'notbefore' claim { nbf, 'value' } converted to a assuming 'value' is seconds since UnixEpoch (UTC 1970-01-01T0:0:0Z). + + If the 'notbefore' claim is not found, then is returned. Time is returned as UTC. + + + + Gets the 'value' of the 'expiration' claim { exp, 'value' } converted to a assuming 'value' is seconds since UnixEpoch (UTC 1970-01-01T0:0:0Z). + + If the 'expiration' claim is not found, then is returned. + + + + Gets a for each JSON { name, value }. + + Each (s) returned will have the translated according to the mapping found in . Adding and removing to will affect the value of the . + and will be set to the value of ( if null). + + + + Adds a JSON object representing the to the + + { 'Claim.Type', 'Claim.Value' } is added. If a JSON object is found with the name == then a { 'Claim.Type', List<object> } will be created to contain the duplicate values. + See For details on how is applied. + 'claim' is null. + + + + Adds a number of to the as JSON { name, value } pairs. + + For each a JSON pair { 'Claim.Type', 'Claim.Value' } is added. If duplicate claims are found then a { 'Claim.Type', List<object> } will be created to contain the duplicate values. + + Any in the that is null, will be ignored. + 'claims' is null. + + + + Gets the DateTime using the number of seconds from 1970-01-01T0:0:0Z (UTC) + + Claim in the payload that should map to an integer. + If the claim is not found, the function returns: DateTime.MinValue + + If an overflow exception is thrown by the runtime. + The DateTime representation of a claim. + + + + Serializes this instance to JSON. + + This instance as JSON. + Use to customize JSON serialization. + + + + Encodes this instance as Base64UrlEncoded JSON. + + Base64UrlEncoded JSON. + Use to customize JSON serialization. + + + + Deserializes Base64UrlEncoded JSON into a instance. + + base64url encoded JSON to deserialize. + An instance of . + Use to customize JSON serialization. + + + + Deserialzes JSON into a instance. + + The JSON to deserialize. + An instance of . + Use to customize JSON serialization. + + + + List of registered claims from different sources + http://tools.ietf.org/html/rfc7519#section-4 + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://openid.net/specs/openid-connect-frontchannel-1_0.html#OPLogout + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + http://tools.ietf.org/html/rfc7519#section-4 + + + + + A designed for representing a JSON Web Token (JWT). + + + + + Initializes a new instance of from a string in JWS Compact serialized format. + + A JSON Web Token that has been serialized in JWS Compact serialized format. + 'jwtEncodedString' is null. + 'jwtEncodedString' contains only whitespace. + 'jwtEncodedString' is not in JWS Compact serialized format. + + The contents of this have not been validated, the JSON Web Token is simply decoded. Validation can be accomplished using + + + + + Initializes a new instance of the class where the contains the crypto algorithms applied to the encoded and . The jwtEncodedString is the result of those operations. + + Contains JSON objects representing the cryptographic operations applied to the JWT and optionally any additional properties of the JWT + Contains JSON objects representing the claims contained in the JWT. Each claim is a JSON object of the form { Name, Value } + base64urlencoded JwtHeader + base64urlencoded JwtPayload + base64urlencoded JwtSignature + 'header' is null. + 'payload' is null. + 'rawSignature' is null. + 'rawHeader' or 'rawPayload' is null or whitespace. + + + + Initializes an instance of where the contains the crypto algorithms applied to the innerToken . + + Defines cryptographic operations applied to the 'innerToken'. + + base64urlencoded key + base64urlencoded JwtHeader + base64urlencoded initialization vector. + base64urlencoded encrypted innerToken + base64urlencoded authentication tag. + 'header' is null. + 'innerToken' is null. + 'rawHeader' is null. + 'rawEncryptedKey' is null. + 'rawInitialVector' is null or empty. + 'rawCiphertext' is null or empty. + 'rawAuthenticationTag' is null or empty. + + + + Initializes a new instance of the class where the contains the crypto algorithms applied to the encoded and . The jwtEncodedString is the result of those operations. + + Contains JSON objects representing the cryptographic operations applied to the JWT and optionally any additional properties of the JWT + Contains JSON objects representing the claims contained in the JWT. Each claim is a JSON object of the form { Name, Value } + 'header' is null. + 'payload' is null. + + + + Initializes a new instance of the class specifying optional parameters. + + If this value is not null, a { iss, 'issuer' } claim will be added. + If this value is not null, a { aud, 'audience' } claim will be added + If this value is not null then for each a { 'Claim.Type', 'Claim.Value' } is added. If duplicate claims are found then a { 'Claim.Type', List<object> } will be created to contain the duplicate values. + If expires.HasValue a { exp, 'value' } claim is added. + If notbefore.HasValue a { nbf, 'value' } claim is added. + The that will be used to sign the . See for details pertaining to the Header Parameter(s). + If 'expires' <= 'notbefore'. + + + + Gets the 'value' of the 'actor' claim { actort, 'value' }. + + If the 'actor' claim is not found, null is returned. + + + + Gets the list of 'audience' claim { aud, 'value' }. + + If the 'audience' claim is not found, enumeration will be empty. + + + + Gets the (s) for this token. + If this is a JWE token, this property only returns the encrypted claims; + the unencrypted claims should be read from the header seperately. + + (s) returned will NOT have the translated according to + + + + Gets the Base64UrlEncoded associated with this instance. + + + + + Gets the Base64UrlEncoded associated with this instance. + + + + + Gets the associated with this instance if the token is signed. + + + + + Gets the 'value' of the 'JWT ID' claim { jti, ''value' }. + + If the 'JWT ID' claim is not found, an empty string is returned. + + + + Gets the 'value' of the 'issuer' claim { iss, 'value' }. + + If the 'issuer' claim is not found, an empty string is returned. + + + + Gets the associated with this instance. + Note that if this JWT is nested ( != null, this property represnts the payload of the most inner token. + This property can be null if the content type of the most inner token is unrecognized, in that case + the content of the token is the string returned by PlainText property. + + + + + Gets the associated with this instance. + + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the s for this instance. + + + + + Gets the signature algorithm associated with this instance. + + If there is a associated with this instance, a value will be returned. Null otherwise. + + + + Gets the to use when writing this token. + + + + + Gets the to use when writing this token. + + + + + Gets or sets the that signed this instance. + + .ValidateSignature(...) sets this value when a is used to successfully validate a signature. + + + + Gets the "value" of the 'subject' claim { sub, 'value' }. + + If the 'subject' claim is not found, null is returned. + + + + Gets the 'value' of the 'notbefore' claim { nbf, 'value' } converted to a assuming 'value' is seconds since UnixEpoch (UTC 1970-01-01T0:0:0Z). + + If the 'notbefore' claim is not found, then is returned. + + + + Gets the 'value' of the 'expiration' claim { exp, 'value' } converted to a assuming 'value' is seconds since UnixEpoch (UTC 1970-01-01T0:0:0Z). + + If the 'expiration' claim is not found, then is returned. + + + + Serializes the and + + A string containing the header and payload in JSON format. + + + + Decodes the string into the header, payload and signature. + + the tokenized string. + the original token. + + + + Decodes the payload and signature from the JWS parts. + + Parts of the JWS including the header. + Assumes Header has already been set. + + + + Decodes the payload and signature from the JWE parts. + + Parts of the JWE including the header. + Assumes Header has already been set. + + + + A designed for creating and validating Json Web Tokens. See: http://tools.ietf.org/html/rfc7519 and http://www.rfc-editor.org/info/rfc7515 + + + + + Default claim type mapping for inbound claims. + + + + + Default value for the flag that determines whether or not the InboundClaimTypeMap is used. + + + + + Default claim type mapping for outbound claims. + + + + + Default claim type filter list. + + + + + Default JwtHeader algorithm mapping + + + + + Static initializer for a new object. Static initializers run before the first instance of the type is created. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the property which is used when determining whether or not to map claim types that are extracted when validating a . + If this is set to true, the is set to the JSON claim 'name' after translating using this mapping. Otherwise, no mapping occurs. + The default value is true. + + + + + Gets or sets the which is used when setting the for claims in the extracted when validating a . + The is set to the JSON claim 'name' after translating using this mapping. + The default value is ClaimTypeMapping.InboundClaimTypeMap. + + 'value' is null. + + + + Gets or sets the which is used when creating a from (s). + The JSON claim 'name' value is set to after translating using this mapping. + The default value is ClaimTypeMapping.OutboundClaimTypeMap + + This mapping is applied only when using or . Adding values directly will not result in translation. + 'value' is null. + + + + Gets the outbound algorithm map that is passed to the constructor. + + + + Gets or sets the used to filter claims when populating a claims form a . + When a is validated, claims with types found in this will not be added to the . + The default value is ClaimTypeMapping.InboundClaimFilter. + + 'value' is null. + + + + Gets or sets the property name of the will contain the original JSON claim 'name' if a mapping occurred when the (s) were created. + See for more information. + + If .IsNullOrWhiteSpace('value') is true. + + + + Gets or sets the property name of the will contain .Net type that was recognized when JwtPayload.Claims serialized the value to JSON. + See for more information. + + If .IsNullOrWhiteSpace('value') is true. + + + + Returns a value that indicates if this handler can validate a . + + 'true', indicating this instance can validate a . + + + + Gets the value that indicates if this instance can write a . + + 'true', indicating this instance can write a . + + + + Gets the type of the . + + The type of + + + + Determines if the string is a well formed Json Web Token (JWT). + see: http://tools.ietf.org/html/rfc7519 + + String that should represent a valid JWT. + Uses matching one of: + JWS: @"^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$" + JWE: (dir): @"^[A-Za-z0-9-_]+\.\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$" + JWE: (wrappedkey): @"^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]$" + + + 'false' if the token is null or whitespace. + 'false' if token.Length is greater than . + 'true' if the token is in JSON compact serialization format. + + + + + Returns a Json Web Token (JWT). + + A that contains details of contents of the token. + A JWS and JWE can be returned. + If is provided, then a JWE will be created. + If is provided then a JWS will be created. + If both are provided then a JWE with an embedded JWS will be created. + + + + + Creates a JWT in 'Compact Serialization Format'. + + The issuer of the token. + The audience for this token. + The source of the (s) for this token. + The notbefore time for this token. + The expiration time for this token. + The issue time for this token. + Contains cryptographic material for generating a signature. + If is not null, then a claim { actort, 'value' } will be added to the payload. See for details on how the value is created. + See for details on how the HeaderParameters are added to the header. + See for details on how the values are added to the payload. + Each in the will map by applying . Modifying could change the outbound JWT. + If is provided, then a JWS will be created. + + A Base64UrlEncoded string in 'Compact Serialization Format'. + + + + Creates a JWT in 'Compact Serialization Format'. + + The issuer of the token. + The audience for this token. + The source of the (s) for this token. + Translated into 'epoch time' and assigned to 'nbf'. + Translated into 'epoch time' and assigned to 'exp'. + Translated into 'epoch time' and assigned to 'iat'. + Contains cryptographic material for signing. + Contains cryptographic material for encrypting. + If is not null, then a claim { actort, 'value' } will be added to the payload. for details on how the value is created. + See for details on how the HeaderParameters are added to the header. + See for details on how the values are added to the payload. + Each in the will map by applying . Modifying could change the outbound JWT. + + A Base64UrlEncoded string in 'Compact Serialization Format'. + If 'expires' <= 'notBefore'. + + + + Creates a Json Web Token (JWT). + + A that contains details of contents of the token. + is used to sign . + + + + Creates a + + The issuer of the token. + The audience for this token. + The source of the (s) for this token. + The notbefore time for this token. + The expiration time for this token. + The issue time for this token. + Contains cryptographic material for generating a signature. + Contains cryptographic material for encrypting the token. + If is not null, then a claim { actort, 'value' } will be added to the payload. for details on how the value is created. + See for details on how the HeaderParameters are added to the header. + See for details on how the values are added to the payload. + Each on the added will have translated according to the mapping found in + . Adding and removing to will affect the name component of the Json claim. + is used to sign . + is used to encrypt or . + + A . + If 'expires' <= 'notBefore'. + + + + Creates a + + The issuer of the token. + The audience for this token. + The source of the (s) for this token. + The notbefore time for this token. + The expiration time for this token. + The issue time for this token. + Contains cryptographic material for generating a signature. + If is not null, then a claim { actort, 'value' } will be added to the payload. for details on how the value is created. + See for details on how the HeaderParameters are added to the header. + See for details on how the values are added to the payload. + Each on the added will have translated according to the mapping found in + . Adding and removing to will affect the name component of the Json claim. + is used to sign . + + A . + If 'expires' <= 'notBefore'. + + + + Creates a Json Web Token (JWT). + + A that contains details of contents of the token. + is used to sign . + + + + Converts a string into an instance of . + + A 'JSON Web Token' (JWT) in JWS or JWE Compact Serialization Format. + A + 'token' is null or empty. + 'token.Length' $gt; . + + If the 'token' is in JWE Compact Serialization format, only the protected header will be deserialized. + This method is unable to decrypt the payload. Use to obtain the payload. + + + + Converts a string into an instance of . + + A 'JSON Web Token' (JWT) in JWS or JWE Compact Serialization Format. + A + 'token' is null or empty. + 'token.Length' is greater than . + + If the 'token' is in JWE Compact Serialization format, only the protected header will be deserialized. + This method is unable to decrypt the payload. Use to obtain the payload. + + + + Deserializes token with the provided . + + . + The current . + The + This method is not current supported. + + + + Reads and validates a 'JSON Web Token' (JWT) encoded as a JWS or JWE in Compact Serialized Format. + + the JWT encoded as JWE or JWS + Contains validation parameters for the . + The that was validated. + is null or whitespace. + is null. + .Length $gt; MamimumTokenSizeInBytes. + does not have 3 or 5 parts. + returns false. + was a JWE was not able to be decrypted. + 'kid' header claim is not null AND decryption fails. + 'enc' header claim is null or empty. + 'exp' claim is < DateTime.UtcNow. + is null or whitespace and is null. Audience is not validated if is set to false. + 'aud' claim did not match either or one of . + 'nbf' claim is > 'exp' claim. + .signature is not properly formatted. + 'exp' claim is missing and is true. + is not null and expirationTime.HasValue is false. When a TokenReplayCache is set, tokens require an expiration time. + 'nbf' claim is > DateTime.UtcNow. + could not be added to the . + is found in the cache. + A from the JWT. Does not include claims found in the JWT header. + + Many of the exceptions listed above are not thrown directly from this method. See to examin the call graph. + + + + + Validates the JSON payload of a . + + The token to validate. + Contains validation parameters for the . + A from the jwt. Does not include the header claims. + + + + Serializes a into a JWT in Compact Serialization Format. + + to serialize. + + The JWT will be serialized as a JWE or JWS. + will be used to create the JWT. If there is an inner token, the inner token's payload will be used. + If either or .SigningCredentials are set, the JWT will be signed. + If is set, a JWE will be created using the JWT above as the plaintext. + + 'token' is null. + 'token' is not a not . + both and are set. + both and .EncryptingCredentials are set. + if is set and is not set. + A JWE or JWS in 'Compact Serialization Format'. + + + + Obtains a and validates the signature. + + Bytes to validate. + Signature to compare against. + to use. + Crypto algorithm to use. + Priority will be given to over . + 'true' if signature is valid. + + + + Validates that the signature, if found or required, is valid. + + A JWS token. + that contains signing keys. + If 'jwt' is null or whitespace. + If 'validationParameters' is null. + If a signature is not found and is true. + If the 'token' has a key identifier and none of the (s) provided result in a validated signature. + This can indicate that a key refresh is required. + If after trying all the (s), none result in a validated signature AND the 'token' does not have a key identifier. + A that has the signature validated if token was signed. + If the 'token' is signed, the signature is validated even if is false. + If the 'token' signature is validated, then the will be set to the key that signed the 'token'.It is the responsibility of to set the + + + + Creates a from a . + + The to use as a source. + The value to set + Contains parameters for validating the token. + A containing the . + + + + Creates the 'value' for the actor claim: { actort, 'value' } + + as actor. + representing the actor. + If is not null: +   If 'type' is 'string', return as string. +   if 'type' is 'BootstrapContext' and 'BootstrapContext.SecurityToken' is 'JwtSecurityToken' +     if 'JwtSecurityToken.RawData' != null, return RawData. +     else return . +   if 'BootstrapContext.Token' != null, return 'Token'. + default: new ( ( actor.Claims ). + + 'actor' is null. + + + + Determines if the audiences found in a are valid. + + The audiences found in the . + The being validated. + required for validation. + See for additional details. + + + + Validates the lifetime of a . + + The value of the 'nbf' claim if it exists in the 'jwtToken'. + The value of the 'exp' claim if it exists in the 'jwtToken'. + The being validated. + required for validation. + for additional details. + + + + Determines if the issuer found in a is valid. + + The issuer to validate + The that is being validated. + required for validation. + The issuer to use when creating the (s) in the . + for additional details. + + + + Determines if a is already validated. + + The value of the 'exp' claim if it exists in the '. + The that is being validated. + required for validation. + + + + Returns a to use when validating the signature of a token. + + The representation of the token that is being validated. + The that is being validated. + A required for validation. + Returns a to use for signature validation. + If key fails to resolve, then null is returned + + + + Returns a to use when decryption a JWE. + + The the token that is being decrypted. + The that is being decrypted. + A required for validation. + Returns a to use for signature validation. + If key fails to resolve, then null is returned + + + + Decrypts a JWE and returns the clear text + + the JWE that contains the cypher text. + contains crypto material. + the decoded / cleartext contents of the JWE. + if 'jwtToken' is null. + if 'validationParameters' is null. + if 'jwtToken.Header.enc' is null or empty. + if 'jwtToken.Header.kid' is not null AND decryption fails. + if the JWE was not able to be decrypted. + + + + Validates the is an expected value. + + The that signed the . + The to validate. + The current . + If the is a then the X509Certificate2 will be validated using the CertificateValidator. + + + + Serializes to XML a token of the type handled by this instance. + + The XML writer. + A token of type . + + + + Log messages and codes + + + +