как связать модель с пользователем, прошедшим проверку подлинности LDAP?

#c# #.net #entity-framework #ldap #asp.net-mvc-5

#c# #.net #entity-framework #ldap #asp.net-mvc-5

Вопрос:

У меня почти нет опыта работы с APS.net . Я создаю веб-сайт, который будет использовать LDAP в качестве аутентификации. Вход в систему уже работает, но мне нужно иметь возможность связывать пользователей LDAP с записями в базе данных. Мне нужно иметь возможность хранить информацию, например, о том, кто создал запись (зарегистрированный пользователь), и связывать запись с другими пользователями на основе групп / ролей LDAP. Я использую Entity Framework. У меня есть опыт работы с Doctrine2 из php, поэтому я делаю предположения, что Entity Framework работает аналогично Droctrine2.

1) Какую информацию о пользователе LDAP я должен использовать в качестве идентификатора? Как я могу получить его для вошедшего в систему пользователя?

2) Должен ли я сохранять идентификатор пользователя LDAP непосредственно в модели, а затем запрашивать LDAP для получения информации о пользователе, или есть какой-то способ связать модель с пользователем LDAP, используя этот идентификатор, волшебным образом создавая экземпляр некоторого класса, представляющего пользователя LDAP?

[UDPATE]

Это внутренний веб-сайт. Только пользователи Active Directory должны иметь возможность входить в систему. Спасибо.

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

1. Самый быстрый способ сделать это — аутентифицировать ваших пользователей у вашего провайдера, такого как Active Directory, если он подтвердится, затем получить пользователя из базы данных вашего приложения. Очевидно, что это некоторое дублирование пользователей и ролей, но на самом деле оно более гибкое, поскольку позволит внешним пользователям регистрироваться и использовать ваш сервис. Если вас интересует корпоративное решение, которое не дублирует, вам нужно посмотреть на FIM

2. @Shoe Хорошее предложение. Я создаю внутренний веб-сайт, поэтому это неприменимо. Только пользователи в Active Directory должны иметь доступ к этому веб-сайту. Пользователи не смогут зарегистрироваться через веб-сайт. Я бы хотел избежать хранения информации о пользователях в базе данных сайта, кроме идентификатора (id?).

3. Как насчет просто таблицы-заглушки, содержащей имя пользователя и active directory EmployeeId . Затем вы можете связать эту таблицу с другими вашими таблицами. Потенциальная проблема заключается в том, что если ваш пользователь AD будет удален, ваше приложение не будет удалено.

4. @Shoe Это была моя первоначальная мысль. Но, как вы упомянули, мне пришлось бы позаботиться о синхронизации пользователей, и я хотел бы избежать этого, насколько это возможно.

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