ASP.NET Core 3 с Angular 8, ASP.NET Core Identity, ролями и токен-аутентификацией - PullRequest
0 голосов
/ 04 октября 2019

Проблема:
Создание WebApi, защищенного токеном, переданным от клиента API.
Некоторые методы API должны быть доступны только пользователям с определенными ролями.
Например,

Сценарий будет выглядеть следующим образом:
Angular8 вызывает WebApi для входа в систему

httpClient.Post(new LogInRequest(userName, password));

WebApi подписывает пользователя и генерирует токен

signInManager.PasswordSignInAsync(userName, password);
var token = GenerateToken(userName); // token should be generated internally
return token;

Angular8 вызывает WebApi и включает в заголовок токен

httpClient.Post(header: "TOKEN", new CreateCompanyRequest(company));

Теперь WebApi проверяет, разрешено ли пользователю, назначенному для токена, выполнять это действие.

[Authorize("Supervisor")] // only user with Supervisor role should be able to use this controller
public class CompanyController : Controller

Над кодом приведен лишь пример того, как он будет работать. До сих пор я пытался прочитать некоторые объяснения JWT Bearer, но большинство этих статей были из старой версии asp.net. Если бы вы могли объяснить мне, как должна работать эта аутентификация, или указать на некоторую документацию о том, как объединить идентификацию ядра asp.net с аутентификацией токена webapi

1 Ответ

2 голосов
/ 07 октября 2019

Вы можете сослаться на ссылку ниже, где представлен полный пример использования аутентификации ядра asp.net, авторизации токена JWT в web-интерфейсе ядра asp.net:

https://fullstackmark.com/post/13/jwt-authentication-with-aspnet-core-2-web-api-angular-5-net-core-identity-and-facebook-login

Вы можете просто адаптировать исходный код для ядра 3.0 asp.net с пакетами 3.0, и он будет работать.

...