|
|
|
@ -18,7 +18,7 @@ public interface ITokenBuilder
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class TokenBuilder(
|
|
|
|
|
PermissionOptions permissionOptions,
|
|
|
|
|
JwtOptions jwtOptions,
|
|
|
|
|
JwtSecurityTokenHandler jwtSecurityTokenHandler,
|
|
|
|
|
IEncryptionService encryptionService)
|
|
|
|
|
: ITokenBuilder
|
|
|
|
@ -34,7 +34,7 @@ public class TokenBuilder(
|
|
|
|
|
new(JwtRegisteredClaimNames.Iat,
|
|
|
|
|
EpochTime.GetIntDate(DateTime.Now).ToString(CultureInfo.InvariantCulture),
|
|
|
|
|
ClaimValueTypes.Integer64),
|
|
|
|
|
new(JwtRegisteredClaimNames.Exp, permissionOptions.Expiration.ToString())
|
|
|
|
|
new(JwtRegisteredClaimNames.Exp, jwtOptions.Expiration.ToString())
|
|
|
|
|
};
|
|
|
|
|
claims.AddRange(userContext.RoleIds.Select(rId => new Claim(ClaimTypes.Role, rId)));
|
|
|
|
|
return claims;
|
|
|
|
@ -58,14 +58,14 @@ public class TokenBuilder(
|
|
|
|
|
public TokenInfo GenerateJwtTokenInfo(IReadOnlyCollection<Claim> claims)
|
|
|
|
|
{
|
|
|
|
|
var jwtToken = new JwtSecurityToken(
|
|
|
|
|
issuer: permissionOptions.Issuer,
|
|
|
|
|
audience: permissionOptions.Audience,
|
|
|
|
|
issuer: jwtOptions.Issuer,
|
|
|
|
|
audience: jwtOptions.Audience,
|
|
|
|
|
claims: claims,
|
|
|
|
|
notBefore: DateTime.Now,
|
|
|
|
|
expires: DateTime.Now.AddSeconds(permissionOptions.Expiration),
|
|
|
|
|
signingCredentials: permissionOptions.SigningCredentials);
|
|
|
|
|
expires: DateTime.Now.AddSeconds(jwtOptions.Expiration),
|
|
|
|
|
signingCredentials: jwtOptions.SigningCredentials);
|
|
|
|
|
var token = jwtSecurityTokenHandler.WriteToken(jwtToken);
|
|
|
|
|
return new TokenInfo(encryptionService.Encrypt(token), permissionOptions.Expiration,
|
|
|
|
|
return new TokenInfo(encryptionService.Encrypt(token), jwtOptions.Expiration,
|
|
|
|
|
JwtBearerDefaults.AuthenticationScheme);
|
|
|
|
|
}
|
|
|
|
|
}
|