summaryrefslogtreecommitdiff
path: root/Program.cs
diff options
context:
space:
mode:
authorHombreLaser <sebastian-440@live.com>2022-11-14 23:31:32 -0600
committerHombreLaser <sebastian-440@live.com>2022-11-14 23:31:32 -0600
commit995e5918b887a248803152aa8f36fdbfa5659baf (patch)
treeb31dd599baff32dc46a01f53372568890ea7eb5f /Program.cs
parent8d60b3bb0b5a3427fb386771d6fa8c00f61058f4 (diff)
Añadido registro de usuarios y configuración de JWTs
Diffstat (limited to 'Program.cs')
-rw-r--r--Program.cs42
1 files changed, 41 insertions, 1 deletions
diff --git a/Program.cs b/Program.cs
index 19b5970..28b00d9 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,5 +1,10 @@
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
+using Microsoft.AspNetCore.Authentication.JwtBearer;
+using Microsoft.IdentityModel.Tokens;
+using System.IdentityModel.Tokens.Jwt;
+using System.Security.Claims;
+using System.Text;
using IdentityAPI.Models;
var builder = WebApplication.CreateBuilder(args);
@@ -8,9 +13,42 @@ var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddDbContext<ApplicationDbContext>(o => o.UseNpgsql(builder.Configuration.GetConnectionString("ApplicationDbContext")));
+builder.Services.AddIdentity<IdentityUser, IdentityRole>()
+// .AddRoles<IdentityRole>()
+ .AddEntityFrameworkStores<ApplicationDbContext>();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
+// 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.Configure<IdentityOptions>(options =>
+{
+ // Password settings.
+ options.Password.RequireDigit = false;
+ options.Password.RequireLowercase = false;
+ options.Password.RequireNonAlphanumeric = false;
+ options.Password.RequireUppercase = false;
+ options.Password.RequiredLength = 6;
+ options.Password.RequiredUniqueChars = 0;
+
+ // Lockout settings.
+ options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
+ options.Lockout.MaxFailedAccessAttempts = 5;
+ options.Lockout.AllowedForNewUsers = true;
+
+ // User settings.
+ options.User.AllowedUserNameCharacters =
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
+ options.User.RequireUniqueEmail = false;
+});
// Identity configuration.
// builder.Services.Configure<IdentityOptions>(options => {
@@ -25,7 +63,9 @@ if (app.Environment.IsDevelopment())
app.UseSwaggerUI();
}
-app.UseHttpsRedirection();
+// app.UseHttpsRedirection();
+
+app.UseAuthentication();
app.UseAuthorization();