Бритва страниц с существующим и API с собственной аутентификацией - PullRequest
0 голосов
/ 29 октября 2019

Я работаю над проектом бритвенных страниц asp.net core 3.0, и я добавил в него папку api, и она все работает.

Но я хочу аутентификацию для функций api.

Я уже использую аутентификацию / идентификацию на своем веб-сайте бритвенных страниц, и я прочитал о JWT, который, как мне кажется, может быть правильным, но возможно ли смешать существующую идентификацию / аутентификацию с JWT, используемым для APIтолько как-то?

Итак, мой API в настоящее время использует стандартный API Visual Studio из коробки: -

[Route("api/[controller]")]
[ApiController]
public class PortfoliosController : ControllerBase
{
    private readonly actools19bContext _context;

    public PortfoliosController(actools19bContext context)
    {
        _context = context;
    }

и т.д ...

И я читал одобавив [Authorize] выше [Route ("api / [controller]")], используя, как я говорю, JWT, но опасаюсь, что это остановит работу стандартного веб-сайта, посвященного бритвам.

Я пытался посмотреть на Google в различныхмест, но не могу найти никого, кто сделал бы то, что мне нужно (что, возможно, не следует делать API-интерфейс для смешивания индикаторов с веб-сайтом бритвы?)

И моя стандартная аутентификация страниц бритв добавлена ​​с использованием

        services.AddAuthorization(options =>
        {
            options.AddPolicy("AdminOnly", policy =>
                  policy.RequireRole("Admin", "Administrator"));
        });

        services.AddAuthorization(options =>
        {
            options.AddPolicy("UserOnly", policy =>
                  policy.RequireRole("User"));
        });

        services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(options =>
            {
                options.Cookie.Expiration = TimeSpan.FromHours(5);
            });

и т. Д.

Кто-нибудь делал подобные вещи раньше, или я действительно должен смотреть на API как на отдельную вещь вне сайта бритвы?

C

1 Ответ

0 голосов
/ 30 октября 2019

Вы можете настроить определенные схемы на контроллерах для использования определенной аутентификации, для вашего веб-API, использующего только аутентификацию JWT, вы можете попробовать

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
[Route("api/[controller]")]
public class MyApiController : Controller

JWT настраивается, как показано ниже при запуске (см. здесь)

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)  
.AddJwtBearer(options =>  
{  
    //your options
});  

См. https://docs.microsoft.com/en-us/aspnet/core/security/authorization/limitingidentitybyscheme?view=aspnetcore-3.0&tabs=aspnetcore2x

...