32 lines
1.2 KiB
C#
32 lines
1.2 KiB
C#
using System.Security.Claims;
|
|
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.IdentityModel.Tokens;
|
|
|
|
namespace Common.Authentication.JwtBearer;
|
|
|
|
public static class JWTAuthenticationExtension
|
|
{
|
|
public static void AddJwtBearerAuth(this IServiceCollection services, IConfiguration configuration)
|
|
{
|
|
var jwtAuthOptions = configuration.GetRequiredSection(JwtBearerAuthenticationOptions.ConfigrationSection)
|
|
.Get<JwtBearerAuthenticationOptions>();
|
|
services.AddAuthentication(opt =>
|
|
{
|
|
opt.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
|
|
}).AddJwtBearer(opt =>
|
|
{
|
|
opt.Authority = jwtAuthOptions.Authority;
|
|
opt.Audience = jwtAuthOptions.Audience;
|
|
opt.TokenValidationParameters = new TokenValidationParameters
|
|
{
|
|
NameClaimType = ClaimTypes.Name,
|
|
ValidateAudience = !string.IsNullOrEmpty(jwtAuthOptions.Audience),
|
|
ValidateIssuer = true,
|
|
ValidateIssuerSigningKey = true,
|
|
ValidateLifetime = true
|
|
};
|
|
});
|
|
}
|
|
} |