IdentityServer и устаревшее хранилище пользователей SQL Server

Несколько недель назад я обнаружил OpenID Connect и IdentityServer V3. Я запустил некоторые из предоставленных примеров, и сегодня я нахожусь в том месте, где мне нужно идти дальше, но я не знаю, как это сделать:

На самом деле у нас есть «самодельный» процесс аутентификации и авторизации, и мы хотели бы перейти на решение OpenID Connect. Identity Server кажется идеальным кандидатом для этого.

Сегодня наши пользователи хранятся в базе данных SQL Server, и в идеале я хотел бы «подключить» эту таблицу к Identity Server (не касаясь схемы этой таблицы). Я читал о "MembershipReboot", но он использует свою собственную базу данных. Я также слышал о создании собственной пользовательской службы, но в образце (CustomUserService) я не нашел ничего полезного. Сегодня я немного растерялся, потому что не знаю, куда идти, и понимаю, что не очень далеко от цели.

мне нужна помощь

Спасибо


person Fred Mériot    schedule 11.09.2015    source источник


Ответы (1)


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

В примере 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 — это все, что вам нужно для начала работы.

person explunit    schedule 11.09.2015
comment
Спасибо, я посмотрю на это - person Fred Mériot; 12.09.2015