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)); }); }
// 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(); }