/// <summary> /// Enables the JWT bearer authentication by registering it in the specified <see cref="serviceCollection"/>. /// </summary> private static void AddJwtBearerAuthentication(IServiceCollection serviceCollection) { using ServiceProvider provider = serviceCollection.BuildServiceProvider(); JwtAccessTokenConfig tokenConfig = provider .GetRequiredService <IOptions <JwtAccessTokenConfig> >() .Value; serviceCollection .AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(o => { o.TokenValidationParameters = new TokenValidationParameters { ValidateLifetime = true, ValidateIssuer = true, ValidateAudience = true, ValidateIssuerSigningKey = true, ClockSkew = tokenConfig.ClockSkew, ValidIssuer = tokenConfig.ValidIssuer, ValidAudience = tokenConfig.ValidAudience, IssuerSigningKey = SymmetricSecurityKeyHelper.CreateFromString(tokenConfig.IssuerSigningKey) }; }); }
/// <summary> /// Creates an instance of type <see cref="JwtSecurityToken"/> based on the specified parameters. /// </summary> private JwtSecurityToken CreateJwtSecurityToken(IEnumerable <Claim> claims, SigningCredentials signingCredentials, JwtAccessTokenConfig tokenConfig) { DateTime currentDateTime = DateTime.Now; DateTime expirationDateTime = currentDateTime.Add(tokenConfig.Lifetime); return(new JwtSecurityToken ( tokenConfig.ValidIssuer, tokenConfig.ValidAudience, claims, currentDateTime, expirationDateTime, signingCredentials )); }
public JwtAccessTokenGenerator(UserManager <ApplicationUser> userManager, IOptions <JwtAccessTokenConfig> tokenConfig) { _userManager = userManager; _tokenConfig = tokenConfig.Value; }