Postgres 基于主机的身份验证如何工作?

How does Postgres host based authentication work?

我正在安装需要 PostgresSQL 的 DSPACE。

请看这个link:DSPACE INSTALL

它说:

Then tighten up security a bit by editing pg_hba.conf and adding this line:

host dspace dspace 127.0.0.1 255.255.255.255 md5. 

我已经在互联网上阅读了上述行的工作原理。它需要一个连接类型,后跟数据库 name/user 名称,后跟 IP 地址和身份验证方案。

我的问题是:这不应该是本地(代替主机)连接,因为 dspace 用户是 运行 本地的吗?

谁能一步一步地告诉我收到请求时会发生什么? dspace 用户将使用 md5 提交请求的说明在哪里?

首先,pg_hba.conf 行末尾有一个 .。那是语法错误。

使用local还是host取决于

  • 此 DSPACE 使用的 API(JDBC,例如,不允许 UNIX 套接字连接)

  • DSPACE 使用的是什么连接字符串

如果您可以指定一个套接字目录作为主机名,您可能可以使用 UNIX 套接字,这样效率会更高。

如果DSPACE使用支持md5认证的驱动程序,流程如下:

  • 客户端向服务器发送一个包含用户和数据库的连接数据包

  • 服务器请求md5身份验证并发送随机"salt"字符串

  • 客户端使用来自服务器的盐计算密码的 MD5 散列并将结果发送到服务器

  • 服务器验证哈希值是否正确

DSpace 使用 JDBC,因此 local 对它不起作用。这里的local表示一种完全不同的与IP无关,只能寻址本地进程的进程间连接:Unix sockets。 JDBC 仅使用 IP,因此 DSpace 需要一个 host 描述符。

该行末尾的那个句点不应该是其中的一部分。那里的文档不清楚 -- 我已经修复了它。

正如 Laurenz Albe 所指出的,DSpace 并未指定使用 MD5 密码哈希。 PostgreSQL 服务器根据您在 pg_hba.conf.

中指定的内容控制将尝试哪些方法