Получите данные пользователя Identity Server 4 из другого приложения - PullRequest
0 голосов
/ 24 сентября 2018

На моей работе мы постепенно заменяем монолитную унаследованную систему архитектурой микросервисов.Мне было поручено написать сервер аутентификации с использованием Asp.Net Core, Identity Server 4 и Entity Framework *.Унаследованная система уже имеет аутентификацию, и наш срок приближается, поэтому мы собираемся использовать унаследованную систему в качестве бэкенда на данный момент.

Как настроить Identity Server / Entity Framework для получения информации для входа в системучерез устаревшую систему?Пока что все, что я нашел, включает в себя добавление базы данных, такой как SQL-сервер.Предположим, ради аргумента, что я не могу получить данные напрямую из базы данных MySQL, которую использует устаревшая система, но легко получить пользовательские данные через JSON API.

Я написал DbContextи реализация IProfileService, которая использует его, но я не уверен, как на самом деле вытащить пользователей в DbContext, и когда я пытаюсь войти в систему с клиента, я получаю эту ошибку:

Нетпоставщик базы данных был настроен для этого DbContext.Поставщик может быть настроен путем переопределения метода DbContext.OnConfiguring или с помощью AddDbContext в поставщике службы приложений.Если используется AddDbContext, то также убедитесь, что ваш тип DbContext принимает объект DbContextOptions в своем конструкторе и передает его базовому конструктору для DbContext.

Однако я не смог найти / выяснитьчто положить в DbContext.OnConfiguring, чтобы настроить это.Я полагаю, что мне нужно где-то реализовать IServiceProvider, но я не могу найти какие-либо подробности о том, как это сделать.

* Мы не женаты на этом, поэтому приветствуются предложения относительно чего-то более подходящего.Мы используем .Net Core.

1 Ответ

0 голосов
/ 25 сентября 2018

Бит EF здесь выглядит как красная сельдь.Если вы говорите с API в унаследованной системе, вы вообще не будете использовать EF для этого.

Если используется IdentityServer4, то имеет смысл использовать их реализации EF для конфигурации и оперативных хранилищ, а затем реализовать свой вход в пользовательский интерфейс, IClaimsService и т. Д. С помощью API, предоставляемого существующей системой.Для этого просто создайте простую клиентскую реализацию, которая вызывает указанный API, принимает и возвращает любые модели, которые вам нужны.

...