Dependencia:

En el appsettings.json
"Authentication": {
"Secretkey": "aas2232323sdfdffdfdf2323", //Clave Secreta
"Issuer": "https://localhost:44366/", //Emisor del token
"Audience": "https://localhost:44366/"
}
En el Controlador
private readonly IConfiguration _configuration;
private readonly ISecurityService _securityService;
public TokenController(IConfiguration configuration,
ISecurityService securityService)
{
_configuration = configuration;
_securityService = securityService;
}
[HttpPost]
public async Task<IActionResult> Authentication(UserLogin userLogin)
{
var validation = await IsValidaUser(userLogin);
if (validation.Item1)
{
var token = GenerateToken(validation.Item2);
return Ok(new { token });
}
return BadRequest();
}
private async Task<(bool, Empleado)> IsValidaUser(UserLogin userLogin)
{
var response = await _securityService.GetUserCredentials(userLogin);
return (response != null, response);
}
private string GenerateToken(Empleado security)
{
var symmetricSecurityKry = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Authentication:Secretkey"]));
var signingCredentials = new SigningCredentials(symmetricSecurityKry, SecurityAlgorithms.HmacSha256);
var header = new JwtHeader(signingCredentials);
var claims = new[]
{
new Claim(ClaimTypes.Name, $"{security.Nombres} {security.Apellidos}"),
new Claim("Email", "irvinpanta96@gmail.com"),
new Claim(ClaimTypes.Role, security.Roles.Descripcion),
};
var payload = new JwtPayload
(
_configuration["Authentication:Issuer"],
_configuration["Authentication:Audience"],
claims,
DateTime.Now,
DateTime.UtcNow.AddMinutes(10)
);
var token = new JwtSecurityToken(header, payload);
return new JwtSecurityTokenHandler().WriteToken(token);
}