IdentityServer4: что такое идиоматический способ интеграции пользовательского источника для аутентификации и получения профиля? - PullRequest
0 голосов
/ 28 мая 2019

Допустим, мне нужно интегрироваться с устаревшей корпоративной системой, поддерживающей пользователей.Предположим, что эта корпоративная система предоставляет C # SDK двумя способами:

  1. Аутентификация: sdk.Authenticate("Region", "Username", "Password") Обратите внимание, что Region - это дополнительный параметр, выбранный пользователем при входе в систему.Поэтому мне нужно иметь возможность читать этот пользовательский параметр в дополнение к учетным данным пользователя.(Да, логин будет интерактивным).

  2. Поиск профиля: sdk.GetProfile(UserId)

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

Я вижу, что расширение IProfileService Я смогу интегрировать извлечение профиля и совокупность пользовательских утверждений.Однако я вижу следующие несколько точек расширения в документах, но не уверен, какой будет лучший способ:

  1. Метод быстрого запуска Account Controller Login(LoginInputModel model, string button): я должен уметьчтобы разместить здесь логику sdk.Authenticate("Region", "Username", "Password") и просто вызвать _signInManager.SignInAsync, чтобы войти в систему пользователя.Но не похоже, что я напрямую расширяю IdentityServer4 для добавления поддержки другого настраиваемого поставщика аутентификации.

  2. IExtensionGrantValidator: Этот ответ и IdentityServer Docs объясните способ сделать пользовательский грант, который я смогу использовать для вызова sdk.Authenticate("Region", "Username", "Password").Но это будет означать, что я буду использовать пользовательский тип гранта.Мне нужно иметь возможность поддерживать существующие типы грантов, такие как Hybrid.Я вижу поддержку пользовательских параметров с помощью параметра context в методе ValidateAsync(ExtensionGrantValidationContext context)

  3. IResourceOwnerPasswordValidator: В этом документе IdentityServer объясняется, как реализовать средство проверки пользовательских паролей дляРесурс Владелец потока.Но мне нужно иметь возможность поддерживать существующие типы грантов, такие как Hybrid.Я вижу поддержку пользовательских параметров через параметр context в методе ValidateAsync(ResourceOwnerPasswordValidationContext context)

  4. Внешние аутентификаторы: Этот документ IdentityServer объясняет, как добавить внешние аутентификаторы.Но я не вижу .AddCustom метод для нестандартных аутентификаторов.Я вижу поддержку только популярных аутентификаторов, таких как Google.

Что мне не хватает?

1 Ответ

0 голосов
/ 01 июня 2019

Я выбрал первый вариант, упомянутый в вопросе: быстрый запуск интерфейса пользователя Account Controller Login(LoginInputModel model, string button) метод

...