Угловая подача бритвой для проверки подлинности на основе файлов cookie - PullRequest
0 голосов
/ 15 января 2019

Я начинаю новый проект с Angular 7, Asp.net core 2, Asp.net Identity, IdentityServer4.

Вкратце, моя архитектура проекта выглядит следующим образом:

  • Проект веб-API (сервер ресурсов)
  • Проект уровня доступа к данным (библиотека проекта c #)
  • Сервер удостоверений 4, использующий удостоверение Asp
  • И один клиент Angular 7, этот проект генерируется с помощью двух команд cli: "dotnet new angular", чтобы сгенерировать бэкэнд. И «нг новый» для генерации кода переднего конца.

Итак, поскольку у углового проекта есть серверная часть, я выбрал гибридный поток по соображениям безопасности.

Моя цель состоит в том, чтобы аутентифицировать пользователя углового клиента с помощью файлов cookie, используя внутренний клиент углового клиента. Я легко выполнил эту работу с помощью клиента MVC, но я все еще не мог понять, как добиться того же с угловым клиентом.

Моя текущая идея состоит в том, чтобы служить angular, используя два действия, одно из которых представляет бритвенную страницу cshtml для анонимных пользователей, а другое - для "авторизованных" пользователей, но я все еще не уверен, достижимо ли это или нет ...

Как вы думаете, это хороший подход или есть лучший способ?

Спасибо, что прочитали мой вопрос.

Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 15 января 2019

Я недавно начал аналогичный проект и обдумывал, как подойти к аутентификации / авторизации.

Закончилась обработка интерфейса Angular и AspNetCore как двух похожих проектов (даже если они находились в одном проекте). Вы можете использовать некоторую библиотеку oidc для angular (например, , например, ), и ваша угловая часть будет в основном клиентом js, использующим поток Hybrid (предпочтительно). Вы можете использовать Angular router и маршрутизацию в сочетании с одной из библиотек oidc для автоматического перенаправления пользователя провайдеру идентификации, если он попытается получить доступ к защищенному ресурсу, обработать обратный вызов токена и выполнить проверку подлинности cookie.

Ваша внутренняя часть в AspNetCore станет просто ApiResource, к которой ваш Angular клиент должен будет иметь доступ (в AllowedScopes), и будет заниматься только передачей данных вашему Angular клиенту (минус тот факт, что что бритвенный двигатель AspNetCore обслуживает начальный Angular AppComponent). Он не будет беспокоиться вообще об опекунах каких-либо маршрутов и будет только о проверке токенов на предъявителя, которые ваш Angular-клиент будет вводить в вызовы Http для этого внутреннего API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...