Ejemplo n.º 1
0
        /// <summary>
        /// Try to validate the token, according to the <paramref name="jwt"/>.
        /// </summary>
        /// <param name="jwt"></param>
        /// <returns></returns>
        public TokenValidationResult TryValidateJwt(Jwt jwt)
        {
            var payload = jwt.Payload !;

            if (payload.ValidationControl != 0)
            {
                if (payload.MissingAudience)
                {
                    return(TokenValidationResult.MissingClaim(jwt, Claims.AudUtf8));
                }

                if (payload.InvalidAudience)
                {
                    return(TokenValidationResult.InvalidClaim(jwt, Claims.AudUtf8));
                }

                if (payload.MissingIssuer)
                {
                    return(TokenValidationResult.MissingClaim(jwt, Claims.IssUtf8));
                }

                if (payload.InvalidIssuer)
                {
                    return(TokenValidationResult.InvalidClaim(jwt, Claims.IssUtf8));
                }

                if (payload.MissingExpirationTime)
                {
                    return(TokenValidationResult.MissingClaim(jwt, Claims.ExpUtf8));
                }

                if (payload.Expired)
                {
                    return(TokenValidationResult.Expired(jwt));
                }

                if (payload.NotYetValid)
                {
                    return(TokenValidationResult.NotYetValid(jwt));
                }
            }

            var validators = _validators;

            for (int i = 0; i < validators.Length; i++)
            {
                var result = validators[i].TryValidate(jwt);
                if (!result.Succedeed)
                {
                    return(result);
                }
            }

            return(TokenValidationResult.Success(jwt));
        }
Ejemplo n.º 2
0
        public TokenValidationResult TryValidate(Jwt jwt)
        {
            if (jwt is null)
            {
                ThrowHelper.ThrowArgumentNullException(ExceptionArgument.jwt);
            }

            if (jwt.Payload is null)
            {
                return(TokenValidationResult.MalformedToken());
            }

            if (!jwt.Payload.TryGetValue(OidcClaims.AcrUtf8, out var property))
            {
                return(TokenValidationResult.MissingClaim(jwt, OidcClaims.AcrUtf8));
            }

            if (string.Equals(_requiredAcr, (string?)property.Value, StringComparison.Ordinal))
            {
                return(TokenValidationResult.InvalidClaim(jwt, OidcClaims.AcrUtf8));
            }

            return(TokenValidationResult.Success(jwt));
        }