@@ -14,12 +14,21 @@ public class JwtTokenService : ITokenService
14
14
{
15
15
private readonly JwtSecurityTokenHandler _tokenHandler = new ( ) ;
16
16
private readonly JwtTokenOptions _tokenOptions ;
17
- private readonly Lazy < TokenValidationParameters > _lazyTokenValidationParameters ;
17
+
18
+ private readonly Lazy < TokenValidationParameters > _lazyTokenValidationParameters ,
19
+ _lazyRefreshTokenValidationParameters ;
18
20
19
21
public JwtTokenService ( IOptions < JwtTokenOptions > tokenOptions )
20
22
{
21
23
_tokenOptions = tokenOptions . Value ;
22
- _lazyTokenValidationParameters = new ( ( ) => _tokenOptions . GetTokenValidationParameters ( ) ) ;
24
+ _lazyTokenValidationParameters = new ( ( ) =>
25
+ _tokenOptions . GetTokenValidationParameters ( ) ) ;
26
+ _lazyRefreshTokenValidationParameters = new ( ( ) =>
27
+ _tokenOptions . GetTokenValidationParameters ( parameters =>
28
+ {
29
+ parameters . ValidAudience = GetRefreshTokenAudience ( ) ;
30
+ } )
31
+ ) ;
23
32
}
24
33
25
34
public Task < TokenEntity > GenerateToken ( params Claim [ ] claims )
@@ -32,13 +41,7 @@ public Task<TokenValidationResult> ValidateToken(string token)
32
41
33
42
public virtual async Task < TokenEntity > RefreshToken ( string refreshToken )
34
43
{
35
- // TODO: cache validation parameters
36
- var validationParameters = _tokenOptions . GetTokenValidationParameters ( parameters =>
37
- {
38
- parameters . ValidAudience = GetRefreshTokenAudience ( ) ;
39
- } ) ;
40
-
41
- var refreshTokenValidateResult = await _tokenHandler . ValidateTokenAsync ( refreshToken , validationParameters ) ;
44
+ var refreshTokenValidateResult = await _tokenHandler . ValidateTokenAsync ( refreshToken , _lazyRefreshTokenValidationParameters . Value ) ;
42
45
if ( ! refreshTokenValidateResult . IsValid )
43
46
{
44
47
throw new InvalidOperationException ( "Invalid RefreshToken" , refreshTokenValidateResult . Exception ) ;
@@ -54,7 +57,7 @@ protected virtual Task<string> GetRefreshToken(Claim[] claims)
54
57
audience : GetRefreshTokenAudience ( ) ,
55
58
claims : claims ,
56
59
notBefore : now . UtcDateTime ,
57
- expires : now . Add ( _tokenOptions . ValidFor ) . UtcDateTime ,
60
+ expires : now . Add ( _tokenOptions . RefreshTokenValidFor ) . UtcDateTime ,
58
61
signingCredentials : _tokenOptions . SigningCredentials ) ;
59
62
var encodedJwt = _tokenHandler . WriteToken ( jwt ) ;
60
63
return encodedJwt . WrapTask ( ) ;
0 commit comments