2024年9月26日:PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:开发版
不受支持的版本:11

20.11. RADIUS 身份验证 #

此身份验证方法的工作原理类似于password,只是它使用 RADIUS 作为密码验证方法。RADIUS 仅用于验证用户名/密码对。因此,用户必须已存在于数据库中,然后才能使用 RADIUS 进行身份验证。

使用 RADIUS 身份验证时,将向配置的 RADIUS 服务器发送访问请求消息。此请求的类型为Authenticate Only,并包含user namepassword(加密)和NAS Identifier的参数。请求将使用与服务器共享的密钥进行加密。RADIUS 服务器将使用Access AcceptAccess Reject对该请求进行响应。不支持 RADIUS 计费。

可以指定多个 RADIUS 服务器,在这种情况下,它们将按顺序尝试。如果从服务器收到负面响应,则身份验证将失败。如果未收到响应,则将尝试列表中的下一个服务器。要指定多个服务器,请用逗号分隔服务器名称,并将列表括在双引号中。如果指定了多个服务器,则其他 RADIUS 选项也可以作为逗号分隔列表给出,以提供每个服务器的各个值。它们也可以指定为单个值,在这种情况下,该值将应用于所有服务器。

以下配置选项受 RADIUS 支持

radiusservers

要连接到的 RADIUS 服务器的 DNS 名称或 IP 地址。此参数是必需的。

radiussecrets

与 RADIUS 服务器安全通信时使用的共享密钥。这必须在 PostgreSQL 和 RADIUS 服务器上具有完全相同的值。建议此字符串至少为 16 个字符。此参数是必需的。

注意

仅当 PostgreSQL 使用对 OpenSSL 的支持进行构建时,使用的加密向量才具有加密强度。在其他情况下,到 RADIUS 服务器的传输应仅被视为模糊处理,而不是安全处理,并且如有必要,应应用外部安全措施。

radiusports

要连接到 RADIUS 服务器上的端口号。如果未指定端口,则将使用默认的 RADIUS 端口(1812)。

radiusidentifiers

用作 RADIUS 请求中NAS Identifier的字符串。例如,此参数可用于识别用户尝试连接到的哪个数据库集群,这对于 RADIUS 服务器上的策略匹配很有用。如果未指定标识符,则将使用默认的postgresql

如果需要在 RADIUS 参数值中包含逗号或空格,可以通过将值括在双引号中来实现,但这很繁琐,因为现在需要两层双引号。将空格放入 RADIUS 密钥字符串的示例如下所示

host ... radius radiusservers="server1,server2" radiussecrets="""secret one"",""secret two"""

提交更正

如果您在文档中看到任何不正确的内容、与您对特定功能的体验不符的内容或需要进一步说明的内容,请使用此表单报告文档问题。