public LoginResponseDto Login(UserReadDto user) { ClaimsIdentity identity = GetIdentity(user); DateTime now = DateTime.UtcNow; JwtSecurityToken jwt = new JwtSecurityToken( issuer: _authConfigsManager.GetIssuer(), audience: _authConfigsManager.GetAudience(), notBefore: now, claims: identity.Claims, expires: now.Add(TimeSpan.FromMinutes(_authConfigsManager.GetLifetime())), signingCredentials: new SigningCredentials(_authConfigsManager.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256)); string encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); return(new LoginResponseDto { AccessToken = encodedJwt }); }
public void ConfigureServices(IServiceCollection services) { services.AddDbContext <UserContext>(opt => opt.UseSqlServer (Configuration.GetConnectionString("UserManagerApiConnection")).EnableSensitiveDataLogging()); services.AddControllers().AddNewtonsoftJson(s => { s.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); }); services.AddScoped <AuthConfigsManager>(); ServiceProvider serviceProvider = services.BuildServiceProvider(); AuthConfigsManager authConfigsManager = serviceProvider.GetService <AuthConfigsManager>(); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.RequireHttpsMetadata = false; options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = authConfigsManager.GetIssuer(), ValidateAudience = true, ValidAudience = authConfigsManager.GetAudience(), ValidateLifetime = true, IssuerSigningKey = authConfigsManager.GetSymmetricSecurityKey(), ValidateIssuerSigningKey = true, }; options.Events = new JwtBearerEvents { OnMessageReceived = context => { var accessToken = context.Request.Query["access_token"]; var path = context.HttpContext.Request.Path; if (!string.IsNullOrEmpty(accessToken) && (path.StartsWithSegments("/chat"))) { context.Token = accessToken; } return(Task.CompletedTask); } }; }); services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); services.AddScoped <IUserRepository, UserRepository>(); services.AddScoped <IUserService, UserService>(); services.AddScoped <IAuthService, AuthService>(); services.AddSignalR(); services.AddCors(options => options.AddPolicy("CorsPolicy", builder => { builder.AllowAnyMethod().AllowAnyHeader() .WithOrigins("http://127.0.0.1:5500/websocket.html"); //.AllowCredentials();//AllowAnyOrigin(); })); }