MVC + WebApi.Авторизация и Аутентификация - PullRequest
0 голосов
/ 27 мая 2018

У меня есть проект ASP.NET MVC и проект Web Api (отдельные проекты).Доступ к базе данных полностью реализован через Web Api (включая авторизацию и аутентификацию).ASP.NET MVC - это клиент, Web Api - это сервер.

Итак, как правильно реализовать авторизацию и аутентификацию в проекте ASP.NET MVC (на стороне клиента)?Я много читал, как это реализовано в Web Api (через токен), но я не могу понять, как правильно использовать этот токен в ASP.NET MVC.

Реализовать перенос для каждого запроса?Я также не знаю, как определить роль пользователя в ASP.NET MVC.Может быть, есть какой-то способ переписать стандартные методы авторизации ASP.NET MVC для работы с токеном Web Api?Будут ли работать атрибуты Authorize на стороне клиента ASP.NET MVC?Предложите, пожалуйста, пример такой реализации, если это возможно, или скажите, как лучше ее реализовать.

Ответы [ 3 ]

0 голосов
/ 27 мая 2018

Я бы порекомендовал вам использовать OWIN интерфейс для реализации аутентификации на основе токенов для веб-API и MVC.Вы должны предоставить токен аутентификации в вашем веб-интерфейсе и дать возможность десериализации токена в MVC и веб-интерфейсе.Итак, вы можете найти пример проекта с открытым исходным кодом здесь , который я разработал, чтобы узнать, как реализовать аутентификацию на основе токенов с OWIN для веб-API.

Для проекта MVC вы должны следоватьта же практика с использованием OWIN.

0 голосов
/ 15 июня 2018

Прежде всего, если вы еще не работаете, возможно, пришло время перейти к .Net Core 2.x.Он не разделяет веб-API и MVC-подполье и является современной технологией.

Если по какой-то причине вы не можете обновить фреймворк, тогда да, используйте Microsoft.Owin, Microsoft.Owin.Security.OpenIdConnect и все зависимости.

OIdC определяет два типа токенов: Идентификационный токен , описывающий пользователя, и Авторизационный токен , предоставляющий доступ к API.В системе должно быть несколько Identity Provider , аутентифицирующих пользователей и авторизующих клиентов (таких как ваше приложение MVC).Такой провайдер может быть внешним (Google, Office 365 и т. Д.) Или внутренним - вы можете использовать бесплатную Identity Server 4.x реализацию и настроить ее под свои нужды.Вы даже можете встроить IdP в свое приложение.

Поток для реализаций OIdC .Net Core и Owin должен быть одинаковым:

  • Вы регистрируете все свои приложения (API и MVC вПоставщик удостоверений)
  • Пользователь запрашивает ресурс MVC, промежуточное программное обеспечение OIdC перенаправляет его на IdP.
  • IdP проверяет подлинность пользователя, выдающего удостоверения и маркеры доступа.
  • MVC проверяет токен удостоверения ииспользует его для создания локального куки-файла аутентификации, поэтому пользователь проходит аутентификацию в приложении.
  • Контроллер MVC вызывает некоторый API и помещает его в токен запроса, запрашиваемый из IdP.
  • API проверяеттокен и отвечает запрошенными данными.
0 голосов
/ 27 мая 2018

Лучший способ - использовать проверку подлинности активного каталога Azure, если активный каталог настроен для использования вашего приложения.Вы можете получить больше информации здесь

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