Запрос на внедрение «Пользовательского» сервера идентификации и удаление EntityFrameworkStore

#blazor #identityserver4 #.net-5

Вопрос:

доброе утро,

У меня есть новый проект Blazor, в котором мы используем сервер идентификации для управления отдельными пользователями. Из коробки это нормально и работает без проблем, даже с дополнительными полями, утверждениями и тому подобным, которые мы добавили.

Моя дилемма на данном этапе (в начале) проекта заключается в серверной архитектуре приложения:

  • Веб-сервер DMZ
  • Внутренний API
  • Внутренняя БД

Все вызовы базы данных должны проходить через внутренний API, вот где моя проблема с базовой реализацией IdentityServer, поскольку он использует EF для вызовов базы данных; они происходят непосредственно с веб-сервера, но они должны проходить через внутренний API.

Я много читал об IdentityServer, JwT и т. Д…. Но я ничего не нашел относительно этой конкретной проблемы использования другого сервера для управления пользователями, что-то, что уже встроено в механику сервера идентификации и может быть реализовано с помощью простой конфигурации.

Итак, я протестировал переопределение некоторых методов UserManger и SignInManager, чтобы указать на методы сервера API. В API он использует базовые объекты UserManger и SignInManager, а затем выполняет свои базовые методы для сохранения, хранения, генерации кода и т. Д. Пока это работает довольно хорошо, у меня просто есть еще несколько незначительных препятствий, которые нужно устранить в отношении методов извлечения/хранения токенов, которые должны быть простой службой для внедрения/переопределения. Было несколько других незначительных проблем, связанных с пользовательским объектом, переданным Api, не связанным с пользовательским объектом, размещенным в Магазине, но его очень легко обойти. Другая проблема заключается в переопределении метода Dispose, но на данный момент это не слишком большая проблема.

Мои последние вопросы таковы:

  • Является ли это несколько типичной установкой или, по крайней мере, допустимым решением? Приступая к делу, переопределение базовых классов на переднем конце немного излишне, но оно позволяет вносить гораздо меньше изменений в код на всех страницах razor. Кроме того, эта реализация, скорее всего, будет использоваться в других приложениях, поэтому наличие других разработчиков в команде, просто использующих этот базовый класс, должно помочь в их разработке.
  • Если это правильная настройка/идея, есть ли какой-либо способ отключить или отключить хранилище EntityFramework переднего плана? В конструкторе я устанавливаю это.Хранить = null. На данный момент выявленные ошибки помогают мне понять, где еще мне нужно копать и что-то исправлять, но, как только все будет запущено, я хотел бы полностью опустить эту часть реализации.

Заранее благодарю вас за любые предложения/советы.

Комментарии:

1. Остановись! Прежде чем продолжить свой проект с помощью IdentityServer, убедитесь, что вы прочитали эту статью ( devblogs.microsoft.com/aspnet/… ) корпорацией Майкрософт и сопровождающими ее комментариями. Лично я покончил с сервером идентификации.

2. Просто переключитесь на схему аутентификации с использованием JWTs (она встроена в платформу .NET 5). Затем вы можете запустить любой внутренний код для управления вашими токенами доступа и аутентификации.