system-praktyk-api/src/InternshipSystem.Api/Security/JwtTokenService.cs
2020-08-29 17:25:48 +02:00

37 lines
1.2 KiB
C#

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 = 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);
}
}
}