using System; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; using InternshipSystem.Api.Options; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; namespace InternshipSystem.Api.Security { public class JwtTokenService { private SecurityOptions _securityOptions; public JwtTokenService(IOptions securityOptions) { _securityOptions = securityOptions.Value; } public string generateToken(ClaimsIdentity identity) { var handler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_securityOptions.Secret); var descriptor = new SecurityTokenDescriptor { Subject = identity, Expires = DateTime.UtcNow.AddMinutes(_securityOptions.Expiration), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var jwtToken = handler.CreateJwtSecurityToken(descriptor); return handler.WriteToken(jwtToken); } } }