Отношения потоков процессов Microsoft Identtiy и Identity Server 4

Я работаю над созданием серии микросервисов с использованием Aspnet Core. Мобильное приложение, настольное приложение и веб-приложение будут использовать службы через Http REST API.

Для аутентификации пользователей я использую платформу Aspnet Core Identity, но я раскрываю создание учетных записей пользователей через REST API. Клиенты выполняют вызов REST с учетными данными, а мой API использует API-интерфейсы Microsoft Identity для подготовки пользователя. Пользователю будет разрешено обращаться к отдельным серверам ресурсов с помощью сервера аутентификации, использующего IdentityServer4.

У меня есть два вопроса, по которым я не смог найти четких указаний с точки зрения безопасности. Должен ли проект Aspnet Core, который использует Microsoft Identity для создания пользователей, находиться в независимом проекте Aspnet Core от проекта, который обрабатывает аутентификацию через IdentityServer4? Есть ли недостатки при разделении двух, которые мне нужно учитывать?

В Microsoft Identity API есть шаблоны и Razor Views, которые можно использовать для обработки аутентификации с точки зрения сервера, включая перенаправления при создании учетной записи или входе в систему и т. д. Если я делаю все через SPA или собственные приложения на стороне клиента, Есть ли что-то плохое в том, чтобы просто предоставить POST API, который принимает информацию о пользователе, создает учетную запись через UserManager<T> и возвращает UserId?

Я хочу предоставить специальную страницу входа, похожую на FB/Google/Twitter и т. д., чтобы аутентификация выполнялась в любом приложении, которое хочет авторизовать пользователя для моих услуг. Однако обычно я не рассматриваю создание учетной записи как часть процесса OAuth. Является ли типичным то, что вы разрешаете перенаправление на страницу создания учетной записи, которая перенаправляет обратно к клиенту после успешного создания учетной записи, или этот процесс обычно используется только для аутентификации через потоки OAuth?

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

Vidmantas Blazevicius 31.05.2019 09:21
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
369
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я бы предложил рассмотреть возможность использования одной службы для IDS4 и ASP.NET Identity, поскольку их можно интегрировать и предоставить вам полную функциональность, которую вы ищете (авторизация и управление пользователями).

В IDS4 есть примеры и хорошая документация по этому поводу.

Для меня, я думаю, разделение их было бы чрезмерным проектированием.

один пример: когда IDS4 генерирует токен доступа для пользователя, вы должны получить утверждения, роли и проверить имя пользователя и пароль, все это хранится в ASP.NET Identity.

Поэтому для получения более подробной информации вы можете проверить документы Identity Server 4: http://docs.identityserver.io/en/latest/quickstarts/0_overview.html

или я с удовольствием проверю свой небольшой пост в блоге, который я попытался дать более подробно и шаг за шагом. https://feras.blog/how-to-use-asp-net-identity-and-identityserver4-in-your-solution/

Начните со ссылки на IDS4, потому что этого может быть достаточно :)

Спасибо, тогда я их укрупню. С помощью микросервисов я пытаюсь избежать совместного использования баз данных между сервисами. Если я разделю их, мне придется совместно использовать базу данных, что будет противоречить шаблону проектирования микросервисов.

Johnathon Sullinger 01.06.2019 00:48

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

Feras Taleb 01.06.2019 00:59

Главный момент при размышлении о пользовательском интерфейсе управления безопасностью заключается в том, как защитить этот пользовательский интерфейс. И самый безопасный подход на сегодняшний день — это аутентификация на основе файлов cookie с файлами cookie того же сайта (способ, который MVC использует по умолчанию). Учтите это при выборе бессерверного шаблона SPA. Для целей управления приложение со строгой серверной частью намного безопаснее, чем доступ к распределенным API-интерфейсам на основе токенов.

Что касается хостинга приложений, @VidmantasBlazevicius абсолютно прав, единственной стратегии нет: разместить все сервисы в одном приложении проще, поэтому оно лучше подходит для средненагруженных систем. Но с увеличением количества пользователей и запросов на проверку подлинности может потребоваться масштабирование, и отделение пользовательского интерфейса управления от проверки подлинности — один из способов справиться с этим.

Другие вопросы по теме