Esempio n. 1
0
        /// <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);
        }
Esempio n. 3
0
        /// <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)}");
            }
        }