Как работает аутентификация на основе хоста Postgres? - PullRequest
0 голосов
/ 23 апреля 2019

Я устанавливаю DSPACE, который нуждается в PostgresSQL.

Пожалуйста, смотрите эту ссылку: DSPACE INSTALL

Там написано:

Затем немного повысите безопасность, отредактировав pg_hba.conf и добавив следующую строку:

host dspace dspace 127.0.0.1 255.255.255.255 md5. 

Я читал в интернете, как работает вышеуказанная строка. Требуется тип подключения, за которым следует имя базы данных / имя пользователя, затем IP-адрес и схема аутентификации.

Мой вопрос: разве это не должно быть локальное (вместо хоста) соединение, поскольку пользователь dspace работает локально?

Может кто-нибудь показать мне шаг за шагом, что происходит, когда приходит запрос? Где инструкции, что пользователь dspace отправит запрос, используя md5?

Ответы [ 2 ]

2 голосов
/ 24 апреля 2019

DSpace использует JDBC, поэтому local не будет работать для него.Здесь local означает совершенно другой тип межпроцессного соединения, которое не имеет ничего общего с IP и может адресовать только локальные процессы: сокеты Unix.JDBC использует только IP, поэтому DSpace нужен дескриптор host.

Этот период в конце строки не должен быть его частью.Там документация была неясной - я исправил ее.

Как заметил Лоренц Альбе, DSpace не указывает, что должны использоваться хеши паролей MD5.Сервер PostgreSQL контролирует, какие методы будут опробованы, основываясь на том, что вы указали в pg_hba.conf.

1 голос
/ 23 апреля 2019

Во-первых, есть . в конце вашей pg_hba.conf строки. Это синтаксическая ошибка.

Использование local или host зависит от

  • какой API использует этот DSPACE (например, JDBC не разрешает соединения с сокетами UNIX)

  • какую строку подключения использует DSPACE

Если вы можете указать каталог сокетов в качестве имени хоста, вы, вероятно, можете использовать сокеты UNIX, что будет более эффективным.

Если DSPACE использует драйвер, который поддерживает md5 аутентификацию, процедура выглядит следующим образом:

  • клиент отправляет серверу пакет соединения с пользователем и базой данных

  • сервер запрашивает md5 аутентификацию и отправляет случайную «солт» строку

  • клиент вычисляет MD5-хеш пароля с солью с сервера и отправляет результат на сервер

  • сервер проверяет правильность хэша

...