Хотелось бы исправить недочет найденный при тестировании аутентификации через LDAP.
Описание недочета
- Аутентификация в удаленных каталогах пользователь проверяется только при первой входе. При последующих попытках данные пользователя берутся из БД. Такая логика не совсем верна, так как пользователя могли удалить, а доступ у него все равно будет.
Примерная схема работы аутентификации:
Поверхностное описание
- Метод AuthenticateAsync класса UserService получает логин и пароль и проверяет, что по такому паролю и логину есть пользователь. Если он ничего не нашел то возвращает null.
- Метод AuthenticateInRemoteCatalogsAsync класса UserService получает логин и пароль. У всех пользователей каталога вызывает метод AuthenticateAsync и возвращает или IUser или null.
- (Дальнейшее описание справедливо только для LdapUserCatalog) Метод AuthenticateAsync получает получает логин и пароль. Отправляет их для проверки на Ldap сервера и получает модель с необходимыми параметрами. После он обновляет данные пользователя или создает нового по данным пришедшим из Ldap.
Предложение
- Поменять местами вызов методов AuthenticateAsync и AuthenticateInRemoteCatalogsAsync.