Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

Program.cs 4.3KB

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