Я занимаюсь разработкой приложения asp .net core web api 2.1.
Я добавляю службу аутентификации JWT в качестве метода расширения в статический класс:
public static class AuthenticationMiddleware
{
public static IServiceCollection AddJwtAuthentication(this IServiceCollection services, string issuer, string key)
{
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
// validate the server that created that token
ValidateIssuer = true,
// ensure that the recipient of the token is authorized to receive it
ValidateAudience = true,
// check that the token is not expired and that the signing key of the issuer is valid
ValidateLifetime = true,
// verify that the key used to sign the incoming token is part of a list of trusted keys
ValidateIssuerSigningKey = true,
ValidIssuer = issuer,
ValidAudience = issuer,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key))
};
});
return services;
}
}
, который я использую в методе ConfigureServices класса Startup следующим образом:
public void ConfigureServices(IServiceCollection services)
{
// adding some services here
services.AddJwtAuthentication(Configuration["Jwt:Issuer"], Configuration["Jwt:Key"]);
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
Теперь у меня есть требование использовать шаблон IOptions для получения данных аутентификации JWT из appsettings.json
Как я могу получить IOptions в методе ConfigureServices для передачи эмитента и ключа в метод расширения? Или как передать IOptions в метод расширения?