diff options
author | HombreLaser <sebastian-440@live.com> | 2022-11-15 21:52:57 -0600 |
---|---|---|
committer | HombreLaser <sebastian-440@live.com> | 2022-11-15 21:52:57 -0600 |
commit | 00acb66e39f7b178d58f3f0ec298aec73d7aced9 (patch) | |
tree | b2340ca37d815a4da9870c3ecd483e8dbcf95a44 /Program.cs | |
parent | 820c3a882c60127338293c1eee4059b2dfd535df (diff) |
Añadida autenticación
Diffstat (limited to 'Program.cs')
-rw-r--r-- | Program.cs | 54 |
1 files changed, 44 insertions, 10 deletions
@@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.IdentityModel.Tokens; +using Microsoft.OpenApi.Models; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; @@ -15,19 +16,52 @@ builder.Services.AddControllers(); builder.Services.AddDbContext<ApplicationDbContext>(o => o.UseNpgsql(builder.Configuration.GetConnectionString("ApplicationDbContext"))); builder.Services.AddIdentity<IdentityUser, IdentityRole>() // .AddRoles<IdentityRole>() - .AddEntityFrameworkStores<ApplicationDbContext>(); + .AddEntityFrameworkStores<ApplicationDbContext>() + .AddDefaultTokenProviders(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); -builder.Services.AddSwaggerGen(); +builder.Services.AddSwaggerGen(c => { + c.SwaggerDoc("v1", new OpenApiInfo { Title = "IdentityAPI", Version = "v1" }); + + c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme + { + Name = "Authorization", + Type = SecuritySchemeType.ApiKey, + Scheme = "Bearer", + BearerFormat = "JWT", + In = ParameterLocation.Header + }); + + c.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Bearer" + } + }, + new String[]{} + } + }); + }); // Autenticación con JSON web tokens. -builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddJwtBearer(options => { - options.TokenValidationParameters = new TokenValidationParameters { - ValidateLifetime = true, - ValidateIssuer = true, - ValidIssuer = builder.Configuration["Jwt:Issuer"], - IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"])) - }; +builder.Services.AddAuthorization(); +builder.Services.AddAuthentication(options => { + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; + }) + .AddJwtBearer(options => { + options.TokenValidationParameters = new TokenValidationParameters { + ValidateIssuer = false, + ValidateAudience = false, + ValidateLifetime = true, + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"])), + ClockSkew = TimeSpan.Zero + }; }); builder.Services.Configure<IdentityOptions>(options => { |