예제 #1
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddCors(options =>
            {
                options.AddPolicy("AllowAllOrigin", builder => builder.AllowAnyOrigin().AllowAnyHeader()
                                  .AllowAnyMethod());
            });
            services.AddDbContext <TwoButtonsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("TwoButtonsConnection")));


            services.AddSingleton <NotificationManager>();
            services.AddTransient <NotificationsDataUnitOfWork>();
            services.AddTransient <INotificationsMessageService, NotificationsMessageService>();
            // services.AddTransient<IVkService, VkService>();
            // services.AddTransient<IFbService, FbService>();

            services.AddTransient <WebSocketsController>();

            // services.AddSingleton<WebSocketManager>();
            //services.AddWebSocketManager();

            services.AddOptions();
            services.AddConnectionsHub();
            services.Configure <ServersSettings>(Configuration.GetSection("ServersSettings"));
            services.Configure <MediaConverterSettings>(Configuration.GetSection("MediaConverterSettings"));
            services.AddSingleton <MediaConverter>();
            var jwtAppSettingOptions = Configuration.GetSection(nameof(JwtSettings));
            var secretKey            = jwtAppSettingOptions["SecretKey"];
            var issuer   = jwtAppSettingOptions[nameof(JwtSettings.Issuer)];
            var audience = jwtAppSettingOptions[nameof(JwtSettings.Audience)];

            services.Configure <JwtSettings>(options =>
            {
                options.Issuer             = issuer;
                options.Audience           = audience;
                options.SigningCredentials = new SigningCredentials(JwtSettings.CreateSecurityKey(secretKey), SecurityAlgorithms.HmacSha256);
            });

            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(configureOptions =>
            {
                configureOptions.ClaimsIssuer              = issuer;
                configureOptions.RequireHttpsMetadata      = false;
                configureOptions.TokenValidationParameters = JwtSettings.CreateTokenValidationParameters(issuer, audience, JwtSettings.CreateSecurityKey(secretKey));
            });
        }
예제 #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <TwoButtonsContext>(
                options => options.UseSqlServer(Configuration.GetConnectionString("TwoButtonsConnection")));
            services.AddDbContext <TwoButtonsAccountContext>(
                options => options.UseSqlServer(Configuration.GetConnectionString("TwoButtonsAccountConnection")));

            services.AddCors(options =>
            {
                options.AddPolicy("AllowAllOrigin", builder => builder.AllowAnyOrigin().AllowAnyHeader()
                                  .AllowAnyMethod());
            });

            services.AddOptions();
            services.AddConnectionsHub();
            services.Configure <ServersSettings>(Configuration.GetSection("ServersSettings"));
            services.Configure <MediaConverterSettings>(Configuration.GetSection("MediaConverterSettings"));

            services.Configure <FacebookAuthSettings>(Configuration.GetSection(nameof(FacebookAuthSettings)));
            services.Configure <VkAuthSettings>(Configuration.GetSection(nameof(VkAuthSettings)));
            services.Configure <VkAuthSettingsTest>(Configuration.GetSection(nameof(VkAuthSettingsTest)));

            var jwtAppSettingOptions = Configuration.GetSection(nameof(JwtSettings));
            var secretKey            = jwtAppSettingOptions["SecretKey"];
            var issuer   = jwtAppSettingOptions[nameof(JwtSettings.Issuer)];
            var audience = jwtAppSettingOptions[nameof(JwtSettings.Audience)];

            var key = JwtSettings.CreateSecurityKey(secretKey);

            services.Configure <JwtSettings>(options =>
            {
                options.Issuer             = issuer;
                options.Audience           = audience;
                options.SigningCredentials = new SigningCredentials(key,
                                                                    SecurityAlgorithms.HmacSha256);
            });

            var emailJwtAppSettingOptions = Configuration.GetSection(nameof(EmailJwtSettings));
            var emailSecretKey            = emailJwtAppSettingOptions["SecretKey"];
            var emailIssuer   = emailJwtAppSettingOptions[nameof(EmailJwtSettings.Issuer)];
            var emailAudience = emailJwtAppSettingOptions[nameof(EmailJwtSettings.Audience)];
            var codeAudience  = emailJwtAppSettingOptions[nameof(EmailJwtSettings.Code)];

            services.Configure <EmailJwtSettings>(options =>
            {
                var emailKey                      = JwtSettings.CreateSecurityKey(emailSecretKey);
                options.Issuer                    = emailIssuer;
                options.Audience                  = emailAudience;
                options.Code                      = codeAudience;
                options.SymmetricSecurityKey      = emailKey;
                options.TokenValidationParameters = JwtSettings.CreateTokenValidationParameters(issuer, audience, emailKey);
                options.SigningCredentials        = new SigningCredentials(emailKey, SecurityAlgorithms.HmacSha256);
            });

            services.AddSingleton <IJwtService, JwtService>();
            services.AddSingleton <IEmailJwtService, EmailJwtService>();
            services.AddTransient <IVkService, VkService>();
            services.AddTransient <IFbService, FbService>();
            services.AddTransient <ICommonAuthService, CommonAuthService>();
            services.AddTransient <IInternalAuthService, InternalAuthService>();
            services.AddTransient <IExternalAuthService, ExternalAuthService>();
            services.AddTransient <AuthorizationUnitOfWork>();
            services.AddSingleton <MediaConverter>();

            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(configureOptions =>
            {
                configureOptions.ClaimsIssuer              = issuer;
                configureOptions.RequireHttpsMetadata      = false;
                configureOptions.TokenValidationParameters =
                    JwtSettings.CreateTokenValidationParameters(issuer, audience, key);
            });

            services.AddLocalization(options => options.ResourcesPath = "Resources");

            services.AddMvc();
        }