Аутентификация JWT только для веб-API. net основной веб-API - PullRequest
0 голосов
/ 07 апреля 2020

У меня в приложении две идентификационные данные, одна для панели администратора (asp. net core mvc), и она использует аутентификацию по умолчанию по классу идентификации, и у меня есть другая идентификационная информация. Net Базовое веб-API для мобильных сервисов и я использую в этом разделе JWT Auth. Как я могу использовать атрибут authroize от jwt для контроллеров web api, но не для всех контроллеров, другой контроллер должен использовать конфигурацию по умолчанию. У меня есть эта конфигурация в моем классе запуска:

var appSettingsSection = configuration.GetSection("AppSettings");
            services.Configure<AppSettings>(appSettingsSection);

            // configure jwt authentication
            var appSettings = appSettingsSection.Get<AppSettings>();
            var key = Encoding.ASCII.GetBytes(appSettings.Secret);
            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            })
                .AddJwtBearer(x =>
                {
                    x.RequireHttpsMetadata = false;
                    x.SaveToken = true;
                    x.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateIssuerSigningKey = true,
                        IssuerSigningKey = new SymmetricSecurityKey(key),
                        ValidateIssuer = false,
                        ValidateAudience = false,
                    };
                });

и для моего контроллера API:

[HttpGet("getUsers")]
        [Authorize]
        public IActionResult GetUsers()
        {..}

1 Ответ

0 голосов
/ 07 апреля 2020

Вы можете использовать разные базовые контроллеры для своих действий MVC и конечных точек API и определять разные схемы аутентификации для каждого из них, используя AuthorizeAttribute.

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/limitingidentitybyscheme?view=aspnetcore-3.1#selecting -the-схему -with-the-authorize-attribute

Пример:

[Authorize(Policy = CookieAuthenticationDefaults.AuthenticationScheme)]
public abstract class MvcControllerBase : Controller
{

}

[Authorize(Policy = JwtBearerDefaults.AuthenticationScheme)]
public abstract class ApiControllerBase : ControllerBase
{

}
...