Несколько недель назад я обнаружил OpenID Connect и IdentityServer V3. Я запустил некоторые из предоставленных примеров, и сегодня я нахожусь в том месте, где мне нужно идти дальше, но я не знаю, как это сделать:
На самом деле у нас есть "самодельный" процесс аутентификации и авторизации, и мы хотели бы перейти на решение OpenID Connect. Identity Server кажется идеальным кандидатом для этого.
Сегодня наши пользователи хранятся в базе данных SQL Server, и в идеале я хотел бы "подключить" эту таблицу к Identity Server (не касаясь схемы этой таблицы). Я читал о "MembershipReboot", но он использует свою собственную базу данных. Я также слышал о создании собственной пользовательской службы, но в образце (CustomUserService) я не нашел ничего полезного. Сегодня я немного растерялся, потому что не знаю, куда идти, и понимаю, что не очень далеко от цели.
мне нужна помощь
Спасибо
Ответ 1 · рейтинг 1 · explunit
В упомянутом вами примере пользовательской службы есть три варианта. обслуживания пользователей, чтобы показать разные подходы, но на самом деле вам нужен только один из них.
В примере LocalRegistrationUserService вы найти такие строки:
public override Task AuthenticateLocalAsync(LocalAuthenticationContext context)
{
var user = Users.SingleOrDefault(x => x.Username == context.UserName && x.Password == context.Password);
/// snip ...
и эти:
public override Task GetProfileDataAsync(ProfileDataRequestContext context)
{
// issue the claims for the user
var user = Users.SingleOrDefault(x => x.Subject == context.Subject.GetSubjectId());
/// snip...
Вам нужно заменить те вызовы, которые ищут значения из коллекции Users в памяти, чем-то, что открывает соединение с SQL-сервером и вместо этого ищет их там.
Дополнительные поддерживаемые методы см. в Custom User Service, но эти два ( AuthenticateLocalAsync, GetProfileDataAsync) плюс поиск SQL - это все, что вам нужно для начала работы.