public string ValidateAndGetUsername()

in Application/Communication/ImageRecognition.Communication.Functions/Functions.cs [98:131]


        public string ValidateAndGetUsername(APIGatewayProxyRequest request, ILambdaContext context)
        {
            string authorization;
            if (!request.Headers.TryGetValue(AUTHORIZATION_HEADER, out authorization))
            {
                context.Logger.LogLine("Error, no Authorization header found");
                throw new Exception("Error, no Authorization header found");
            }

            if (authorization.StartsWith(BEARER_PREFIX, StringComparison.OrdinalIgnoreCase))
                authorization = authorization.Substring(BEARER_PREFIX.Length + 1);

            ClaimsPrincipal user;
            try
            {
                SecurityToken validatedToken;
                user = new JwtSecurityTokenHandler().ValidateToken(authorization, _jwtValidationParameters,
                    out validatedToken);

                if (DateTime.UtcNow < validatedToken.ValidFrom || validatedToken.ValidTo < DateTime.UtcNow)
                {
                    Console.WriteLine(
                        $"Error, JWT Token expired. Token was valid from {validatedToken.ValidFrom} to {validatedToken.ValidTo}");
                    throw new Exception("JWT Token expired");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"Error validating JWT token: {e.Message}");
                throw;
            }

            return user.FindFirst("cognito:username")?.Value;
        }