37 lines
1.2 KiB
C#
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);
|
|
}
|
|
}
|
|
} |