/// <summary> /// Initializes a new instance of the <see cref="AsyncInitializationMiddleware"/> class. /// </summary> /// <param name="next">The next middleware.</param> /// <param name="jwtTokenHelper">The JWT token helper.</param> /// <param name="awsCognitoClientSecretHelper">The AWS Cognito Client Secret Helper.</param> /// <param name="lifetime">The application lifetime.</param> /// <param name="awsCognitoHelper">The AWS Cognito Helper.</param> /// <param name="configSettings">The Config Settings.</param> /// <param name="logger">Logger</param> public AsyncInitializationMiddleware(RequestDelegate next, IHostApplicationLifetime lifetime, AWSCognitoHelper awsCognitoHelper, JwtTokenHelper jwtTokenHelper, AWSCognitoClientSecretHelper awsCognitoClientSecretHelper, IOptions <ConfigSettings> configSettings, ILogger <AsyncInitializationMiddleware> logger ) { this._next = next; this._awsCognitoHelper = awsCognitoHelper; this._awsCognitoClientSecretHelper = awsCognitoClientSecretHelper; this._configSettings = configSettings.Value; this._jwtTokenHelper = jwtTokenHelper; this._logger = logger; // Start initialization when the app starts var startRegistration = default(CancellationTokenRegistration); var registration = startRegistration; lifetime.ApplicationStarted.Register(() => { _initializationTask = InitializeAsync(lifetime.ApplicationStopping); registration.Dispose(); }); }
public async Task GetTokenWithSessionId_VerifyTokenAndSessionId() { var configSettings = Options.Create(GetTestConfigSettings()); var httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(configSettings.Value.TokenRequestTimespanSecs) }; var amazonCognitoIdentityProviderClient = new AmazonCognitoIdentityProviderClient(); var awsCognitoHelper = new AWSCognitoHelper(httpClient, amazonCognitoIdentityProviderClient); var awsCognitoClientSecretHelper = new AWSCognitoClientSecretHelper(configSettings); var fireBaseHelper = new FirebaseHelper(); var jwtTokenHelper = new JwtTokenHelper(configSettings, httpClient); var client = configSettings.Value.Clients.First(); var cognitoClientSecretData = new CognitoClient { ClientId = client.Cognito.ClientApp.ClientId, UserPoolId = client.Cognito.ClientApp.UserPoolId }; MockingHelper.SetFieldValue(awsCognitoClientSecretHelper, "_cognitoClientSecretDataArr", new[] { cognitoClientSecretData }); cognitoClientSecretData.ClientSecret = await awsCognitoHelper.GetClientSecretForAppClientAsync(cognitoClientSecretData); var logger = Mock.Of <ILogger <TokenController> >(); var controller = new TokenController(configSettings, logger, awsCognitoHelper, awsCognitoClientSecretHelper, fireBaseHelper, jwtTokenHelper) { CurrentClient = new Client { ConfigClientData = client, ExtraClientData = new ExtraClientData() } }; controller.CurrentClient.ConfigClientData.Cognito.ClientApp.ClientSecret = cognitoClientSecretData.ClientSecret; await TestIdToken(true, controller, jwtTokenHelper).ConfigureAwait(false); }
/// <summary> /// Initializes a new instance of the <see cref="TokenController"/> class. /// </summary> /// <param name="configSettings">The Config Settings.</param> /// <param name="awsCognitoHelper">The AWS Cognito helper.</param> /// <param name="awsCognitoClientSecretHelper">The AWS Cognito Client Secret helper.</param> /// <param name="firebaseHelper">The Firebase helper.</param> /// <param name="jwtTokenHelper">The JWT token helper.</param> public TokenController(IOptions <ConfigSettings> configSettings, ILogger <TokenController> logger, AWSCognitoHelper awsCognitoHelper, AWSCognitoClientSecretHelper awsCognitoClientSecretHelper, FirebaseHelper firebaseHelper, JwtTokenHelper jwtTokenHelper) : base(configSettings) { this._awsCognitoHelper = awsCognitoHelper; this._awsCognitoClientSecretHelper = awsCognitoClientSecretHelper; this._firebaseHelper = firebaseHelper; this._jwtTokenHelper = jwtTokenHelper; this._logger = logger; if (this.CurrentClient != null) { this.CurrentClient.ConfigClientData.Cognito.ClientApp.ClientSecret = this._awsCognitoClientSecretHelper.GetClientSecretForCognitoClient(this.CurrentClient.ConfigClientData); _logger.LogInformation($"In TokenController: CurrentClient = {JsonConvert.SerializeObject(this.CurrentClient)}"); } }