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;
}