Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using BlackRock.Reporting.API.Authentication;
  2. using BlackRock.Reporting.API.Core;
  3. using BlackRock.Reporting.API.Core.Models;
  4. using BlackRock.Reporting.API.Core.Repositories;
  5. using BlackRock.Reporting.API.Persistence;
  6. using BlackRock.Reporting.API.Persistence.Repositories;
  7. using MediatR;
  8. using Microsoft.AspNetCore.Authentication.JwtBearer;
  9. using Microsoft.AspNetCore.Identity;
  10. using Microsoft.EntityFrameworkCore;
  11. using Microsoft.IdentityModel.Tokens;
  12. using Microsoft.OpenApi.Models;
  13. var builder = WebApplication.CreateBuilder(args);
  14. // Add services to the container.
  15. builder.Services.AddDbContext<BRDbContext>(config =>
  16. //config.UseSqlServer(builder.Configuration.GetConnectionString("Default")));
  17. config.UseSqlite(builder.Configuration.GetConnectionString("Default")));
  18. builder.Services.AddScoped<IGenerator, PdfGenerator>();
  19. builder.Services.AddScoped(typeof(IRepository<>), typeof(EFRepository<>));
  20. builder.Services.AddScoped<IUsersRepository, UsersRepository>();
  21. builder.Services.AddScoped<IUnitOfWork, UnitOfWork>();
  22. builder.Services.AddScoped<IJwtManager, JwtManager>();
  23. builder.Services.AddScoped<IRefreshTokenManager, RefreshTokenManager>();
  24. builder.Services.AddCors();
  25. builder.Services.AddControllers();
  26. builder.Services.AddAutoMapper(typeof(Program));
  27. builder.Services.AddIdentity<ApplicationUser, IdentityRole>()
  28. .AddTokenProvider("MyApp",typeof(DataProtectorTokenProvider<ApplicationUser>))
  29. .AddEntityFrameworkStores<BRDbContext>()
  30. .AddDefaultTokenProviders();
  31. builder.Services.AddAuthentication(options =>
  32. {
  33. options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
  34. options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
  35. options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
  36. })
  37. .AddJwtBearer(options =>
  38. {
  39. options.SaveToken = true;
  40. options.RequireHttpsMetadata = false;
  41. options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
  42. {
  43. ValidateIssuer = false,
  44. ValidateAudience = false,
  45. ValidateLifetime = true,
  46. RequireExpirationTime = true,
  47. IssuerSigningKey = new SymmetricSecurityKey(Convert.FromBase64String("db3OIsj+BXE9NZDy0t8W3TcNekrF+2d/1sFnWG4HnV8TZY30iTOdtVWJG8abWvB1GlOgJuQZdcF2Luqm/hccMw=="))
  48. //IssuerSigningKey = new SymmetricSecurityKey(Convert.FromBase64String(builder.Configuration["SecurityKey"]))
  49. };
  50. });
  51. // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
  52. builder.Services.AddEndpointsApiExplorer();
  53. builder.Services.AddSwaggerGen(
  54. c => {
  55. c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "BlackRock.Service.API", Version = "v1" });
  56. c.AddSecurityDefinition("Bearer", new Microsoft.OpenApi.Models.OpenApiSecurityScheme
  57. {
  58. Description = @"Enter 'Bearer' [space] and your token",
  59. Name = "Authorization",
  60. In = Microsoft.OpenApi.Models.ParameterLocation.Header,
  61. Type = Microsoft.OpenApi.Models.SecuritySchemeType.ApiKey,
  62. Scheme = "Bearer"
  63. });
  64. c.AddSecurityRequirement(new Microsoft.OpenApi.Models.OpenApiSecurityRequirement {
  65. {
  66. new OpenApiSecurityScheme
  67. {
  68. Reference = new OpenApiReference
  69. {
  70. Type = ReferenceType.SecurityScheme,
  71. Id = "Bearer"
  72. },
  73. Scheme = "OAuth2",
  74. Name = "Bearer",
  75. In = ParameterLocation.Header
  76. },
  77. new List<String>()
  78. }
  79. });
  80. }
  81. );
  82. builder.Services.AddMediatR(typeof(Program));
  83. var app = builder.Build();
  84. // Configure the HTTP request pipeline.
  85. app.ConfigureExceptionHandler(builder.Logging);
  86. app.UseCors(options =>
  87. options.AllowAnyHeader()
  88. .AllowAnyMethod()
  89. .AllowAnyOrigin()
  90. );
  91. if (app.Environment.IsDevelopment())
  92. {
  93. app.UseSwagger();
  94. app.UseSwaggerUI();
  95. }
  96. app.UseHttpsRedirection();
  97. app.UseAuthentication();
  98. app.UseAuthorization();
  99. app.MapControllers();
  100. app.Run();