-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJwtBearerConfiguration.cs
More file actions
49 lines (41 loc) · 2.13 KB
/
Copy pathJwtBearerConfiguration.cs
File metadata and controls
49 lines (41 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System.Text;
using FrontEnd.SPA.Infrastructure;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
namespace FrontEnd.SPA.Configurations;
public static class JwtBearerConfiguration
{
private static IServiceProvider? services;
private static ITokenReplayManager? ReplayManager => services!.GetService<ITokenReplayManager>();
private static ITokenLifetimeManager? LifetimeManager => services!.GetService<ITokenLifetimeManager>();
public static IApplicationBuilder UseJwtTokenManagement( this IApplicationBuilder builder )
{
services = builder.ApplicationServices;
return builder;
}
public static Action<JwtBearerOptions> SetUp( WebApplicationBuilder builder ) =>
options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = builder.Configuration[ "Jwt:Issuer" ],
ValidAudience = builder.Configuration[ "Jwt:Audience" ],
IssuerSigningKey = new SymmetricSecurityKey( Encoding.UTF8.GetBytes( builder.Configuration[ "Jwt:Key" ] ) ),
ValidateIssuer = true,
ValidateAudience = true,
ValidateIssuerSigningKey = true,
ValidateLifetime = true,
LifetimeValidator = LifetimeValidator,
TokenReplayValidator = TokenReplayValidator
};
};
private static bool LifetimeValidator( DateTime? notBefore,
DateTime? expires,
SecurityToken securityToken,
TokenValidationParameters validationParameters ) =>
LifetimeManager?.ValidateToken( notBefore, expires, securityToken, validationParameters ) ?? false;
private static bool TokenReplayValidator( DateTime? expirationTime,
string securityToken,
TokenValidationParameters validationParameters ) =>
ReplayManager?.ValidateToken( expirationTime, securityToken, validationParameters ) ?? false;
}