public Tests()
        {
            Startup.Initialize();

            IConfiguration configuration = Startup.GetIConfiguration(TestContext.CurrentContext.TestDirectory);

            JwtTokenConfigurations.Load(configuration);

            Utility authUtility      = new Utility(configuration.GetValue <string>("ConnectionStrings:DefaultConnection"), "Auth");
            Utility userTokenUtility = new Utility(configuration.GetValue <string>("ConnectionStrings:DefaultConnection"), "UserTokens");

            AzureTableUserStore <AzureTableUser> azureTableUserStore = new AzureTableUserStore <AzureTableUser>(authUtility.Table, userTokenUtility);
            var loggerFactory = LoggerFactory.Create(builder =>
            {
                builder.AddConsole();
            });

            AzureTableUserManager userManager = new AzureTableUserManager(
                store: new AzureTableUserStore <AzureTableUser>(authUtility.Table, userTokenUtility),
                optionsAccessor: new OptionsAccessor <IdentityOptions>(),
                passwordHasher: new PasswordHasher <AzureTableUser>(),
                userValidators: new List <IUserValidator <AzureTableUser> >()
            {
                new UserValidator <AzureTableUser>()
            },
                passwordValidators: new List <IPasswordValidator <AzureTableUser> >()
            {
                new PasswordValidator <AzureTableUser>()
            },
                keyNormalizer: new LookupNormalizer(),
                errors: new IdentityErrorDescriber(),
                services: null,
                logger: loggerFactory.CreateLogger <UserManager <AzureTableUser> >(),
                textResourceManager: new Nivra.Localization.TextResourceManager(),
                emailSender: new EmailSender(new AuthMessageSenderOptions()
            {
                SendGridKey = "", SendGridUser = ""
            }),
                userTokenUtility: userTokenUtility
                );

            accountController = new Controllers.AccountController(Startup.AzureTableRepo, Startup.AuthUtility, Startup.UserTokenUtility, userManager);

            //
            _email    = Startup.Dict["Email"];
            _password = Startup.Dict["Password"];
        }
Beispiel #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddIdentityCore <AzureTableUser>(options =>
                                                      options.SignIn.RequireConfirmedAccount = true
                                                      )

            //.AddTokenProvider<EmailConfirmationTokenProvider<AzureTableUser>>(TokenOptions.DefaultProvider)
            .AddTokenProvider <PasswordResetTokenProvider <AzureTableUser> >(TokenOptions.DefaultProvider)
            //.AddTokenProvider<ChangePhoneNumberTokenProvider<AzureTableUser>>(TokenOptions.DefaultProvider)
            //.AddTokenProvider<EmailTokenProvider<AzureTableUser>>("ChangePhoneNumber")
            .AddTokenProvider <UserTwoFactorTokenProvider>(TokenOptions.DefaultProvider)
            //.AddTokenProvider<DataProtectorTokenProvider<AzureTableUser>>(TokenOptions.DefaultProvider)

            .AddTokenProvider <AppEmailConfirmationTokenProvider <AzureTableUser> >("EmailConfirmationTokenProvider")
            //.AddTokenProvider<PasswordResetTokenProvider<AzureTableUser>>("PasswordReset")
            //.AddTokenProvider<ChangePhoneNumberTokenProvider<AzureTableUser>>("ChangePhoneNumber")
            ////.AddTokenProvider<EmailTokenProvider<AzureTableUser>>("ChangePhoneNumber")
            //.AddTokenProvider<UserTwoFactorTokenProvider>("TwoFactorTokenProvider")
            // .AddTokenProvider<DataProtectorTokenProvider<AzureTableUser>>(TokenOptions.DefaultProvider)
            .AddDefaultTokenProviders()
            ;


            AzureTableRepo azureTableRepo = new AzureTableRepo();

            Nivra.AzureOperations.Utility utility = new Nivra.AzureOperations.Utility(Configuration["ConnectionStrings:DefaultConnection"], "Auth");

            //Configuring CORS
            services.AddCors(config =>
            {
                config.AddPolicy("AllowAll", builder =>
                {
                    builder.WithOrigins(Configuration["AllowedHosts"])
                    .AllowAnyMethod()
                    .AllowAnyHeader();
                });
            });


            //         // Configuring PasswordHasher
            //services.Configure<PasswordHasherOptions>(options =>
            //{

            //	options.HashAlgorithm = PasswordHasherAlgorithms.SHA1;
            //	options.SaltSize = 16;
            //	options.IterationCount = 8192;
            //});

            //// Registering PasswordHasher
            //services.AddPasswordHasher();

            //services.AddIdentity<AzureTableUser, AzureTableRole>();
            JwtTokenConfigurations.Load(Configuration);

            services.AddGenericJwtAuthService();

            var tables = AzureTables.InitializeAzureTables(Configuration["ConnectionStrings:DefaultConnection"], "Auth");

            foreach (var table in tables)
            {
                azureTableRepo.Collection.Add(table.Name, table);
            }

            services.AddSingleton <IAzureTableRepo>(azureTableRepo);
            services.AddSingleton <Nivra.AzureOperations.Utility>(utility);

            // Register the Swagger generator, defining 1 or more Swagger documents
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "My API", Version = "v1"
                });
            });

            services.AddControllersWithViews()
            .AddNewtonsoftJson(options =>
                               options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
                               );
            // In production, the Angular files will be served from this directory
            services.AddSpaStaticFiles(configuration =>
            {
                configuration.RootPath = "ClientApp/dist";
            });

            services.AddTransient <IEmailSender, EmailSender>();
            services.Configure <AuthMessageSenderOptions>(Configuration);

            services.AddTransient(typeof(IUserTwoFactorTokenProvider <AzureTableUser>), typeof(UserTwoFactorTokenProvider));
            services.AddSingleton(typeof(TextResourceManager));
        }