in Application/Communication/ImageRecognition.Communication.Functions/Functions.cs [134:167]
private async Task<TokenValidationParameters> CreateTokenValidationParameters(ILambdaContext context)
{
context.Logger.LogLine("Loading user pool configuration from SSM Parameter Store.");
var configuration = new ConfigurationBuilder()
.AddSystemsManager("/ImageRecognition")
.Build();
var region = configuration["AWS:Region"];
if (string.IsNullOrEmpty(region)) region = FallbackRegionFactory.GetRegionEndpoint().SystemName;
var userPoolId = configuration["AWS:UserPoolId"];
var userPoolClientId = configuration["AWS:UserPoolClientId"];
context.Logger.LogLine("Configuring JWT Validation parameters");
var openIdConfigurationUrl =
$"https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/openid-configuration";
var configurationManager = new ConfigurationManager<OpenIdConnectConfiguration>(openIdConfigurationUrl,
new OpenIdConnectConfigurationRetriever());
context.Logger.LogLine($"Loading open id configuration from {openIdConfigurationUrl}");
var openIdConfig = await configurationManager.GetConfigurationAsync();
var validIssuer = $"https://cognito-idp.{region}.amazonaws.com/{userPoolId}";
context.Logger.LogLine($"Valid Issuer: {validIssuer}");
context.Logger.LogLine($"Valid Audiences: {userPoolClientId}");
return new TokenValidationParameters
{
ValidIssuer = validIssuer,
ValidAudiences = new[] {userPoolClientId},
IssuerSigningKeys = openIdConfig.SigningKeys
};
}