Как проверить каким метдом авторизировался пользователь?
Настраивая кровавый энтерпрайз узнал для себя, что последовательность типов авторизации влияет на поведение базы.
Если метод trusted стоит после md5 то он отменяет вход без пароля.
The first record with a matching connection type, client address, requested database, and user name is used to perform authentication. There is no "fall-through" or "backup": if one record is chosen and the authentication fails, subsequent records are not considered. If no record matches, access is denied.
Как можно проследить какой из способов авторизации был выбран?
Ссылки
Ответы (1 шт):
Код обработки hba как видно не экспортирует подходящих сведений в stats collector либо логи базы. Хотя в структуре HbaLine номер строки pg_hba файла хранится. Да, проверяется только первая совпадающая по типу соединения, имени пользователя, базы и адреса подключения строка. Поэтому проверять правила глазами.
Необходимые сведения доступны в ClientAuthentication_hook функции обратного вызова. Посмотрите на модуль auth_delay как крайне короткий пример написания расширения, при том именно для этой функции обратного вызова. (но да, это строго для компилируемых языков и в кровавом энтерпрайзе так развлекаться не позволят)
Либо можете написать письмо в pgsql-hackers с аргументацией необходимости и предложением куда-то эти сведения сохранять. Например, в лог при включенном log_connections вероятно будет вполне уместно, возможно в errdetail секции.