public static void Register(IServiceCollection services, IConfiguration configuration) { var signConfiguration = new SignConfigurationToken(); services.AddSingleton(signConfiguration); var tokenConfigure = new TokenConfigurations(); new ConfigureFromConfigurationOptions <TokenConfigurations>( configuration.GetSection(nameof(TokenConfigurations))) .Configure(tokenConfigure); services.AddSingleton(tokenConfigure); services .AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(bearrerOptions => { var paramsValidation = bearrerOptions.TokenValidationParameters; paramsValidation.ValidateIssuerSigningKey = true; paramsValidation.ValidateLifetime = true; paramsValidation.ValidateActor = true; paramsValidation.ValidateAudience = true; paramsValidation.ValidAudience = tokenConfigure.Audience; paramsValidation.ValidIssuer = tokenConfigure.Issuer; paramsValidation.ClockSkew = TimeSpan.Zero; paramsValidation.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(tokenConfigure.SigningKey)); }); services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build()); auth.AddPolicy("Portal", policy => { policy.RequireAssertion(context => context.User.HasClaim(c => c.Type == Constant.EMPRESAID_CLAIM)); }); }); services.AddMemoryCache(); }
public async Task <IActionResult> Login( [FromBody] UserViewModel usuario, [FromServices] TokenConfigurations tokenConfiguration, [FromServices] SignConfigurationToken signinConfiguration, [FromServices] IUserAppService usuarioAppService, [FromServices] ILoggerAppService loggerService) { if (usuario is null || !ModelState.IsValid) { return(BadRequest(ModelState)); } var objRetorno = new BaseViewModel <TokenViewModel>(); var viewModel = _mapper.Map <UserDomain>(usuario); var userBase = await usuarioAppService.ValidarUsuarioAsync(viewModel); if (userBase != null) { var identity = new ClaimsIdentity( new GenericIdentity(userBase.Login, "Login"), new[] { new Claim(JwtRegisteredClaimNames.Jti, userBase.UserId.ToString()), new Claim(JwtRegisteredClaimNames.UniqueName, userBase.Email), new Claim("CompanyId", userBase.CompanyId.ToString()) } ); var dateCreate = DateTime.Now; var dateExpired = dateCreate + TimeSpan.FromDays(tokenConfiguration.ExpireIn); var handler = new JwtSecurityTokenHandler(); var securityToken = handler.CreateToken(new SecurityTokenDescriptor { Issuer = tokenConfiguration.Issuer, Audience = tokenConfiguration.Audience, Subject = identity, NotBefore = dateCreate, Expires = dateExpired, SigningCredentials = new SigningCredentials( new SymmetricSecurityKey( Encoding.UTF8.GetBytes(tokenConfiguration.SigningKey)), SecurityAlgorithms.HmacSha256 ) }); var token = handler.WriteToken(securityToken); objRetorno.ObjetoDeRetorno = new TokenViewModel() { UsuarioId = userBase.UserId, Nome = userBase.Name, Email = userBase.Email, Autenticado = true, Criacao = dateCreate, Expira = dateExpired, Token = token, }; #region Logger loggerService.SaveLoggerSuccess(new domain.core.Entity.Log.LoggerDomain { objects = JsonConvert.SerializeObject(objRetorno.ObjetoDeRetorno), token = objRetorno.ObjetoDeRetorno.Token, userId = objRetorno.ObjetoDeRetorno.UsuarioId }); #endregion return(Ok(objRetorno)); } return(Unauthorized()); }
public async Task <IActionResult> Login( [FromBody] UserViewModel usuario, [FromServices] TokenConfigurations tokenConfiguration, [FromServices] SignConfigurationToken signinConfiguration, [FromServices] IUserAppService usuarioAppService) { #region .::Method logs request logsAppService.SaveLog(this.HttpContext.Request.Headers); #endregion if (usuario is null || !ModelState.IsValid) { return(BadRequest(ModelState)); } var objRetorno = new BaseViewModel <TokenViewModel>(); var viewModel = _mapper.Map <UserDomain>(usuario); var userBase = await usuarioAppService.ValidingUserAsync(viewModel); if (userBase != null) { var identity = new ClaimsIdentity( new GenericIdentity(userBase.Login, "Login"), new[] { new Claim(JwtRegisteredClaimNames.Jti, userBase.UserId.ToString()), new Claim(JwtRegisteredClaimNames.UniqueName, userBase.Email) } ); var dateCreate = DateTime.Now; var dateExpired = dateCreate + TimeSpan.FromDays(tokenConfiguration.ExpireIn); var handler = new JwtSecurityTokenHandler(); var securityToken = handler.CreateToken(new SecurityTokenDescriptor { Issuer = tokenConfiguration.Issuer, Audience = tokenConfiguration.Audience, Subject = identity, NotBefore = dateCreate, Expires = dateExpired, SigningCredentials = new SigningCredentials( new SymmetricSecurityKey( Encoding.UTF8.GetBytes(tokenConfiguration.SigningKey)), SecurityAlgorithms.HmacSha256 ) }); var token = handler.WriteToken(securityToken); objRetorno.Message = objRetorno.Success == true?message.AUTH_SUCCESS() : message.AUTH_ERROR(); objRetorno.ObjectReturn = new TokenViewModel() { UserId = userBase.UserId, Name = userBase.Name, Mail = userBase.Email, Authenticate = true, CreateAt = dateCreate, Expires = dateExpired, Token = token }; #region .::Methods Logs logsAppService.SaveLog(objRetorno); #endregion return(Ok(objRetorno)); } return(Unauthorized()); }