这种认证方法的操作方式与 password
类似,只是它使用 RADIUS 作为密码验证方法。RADIUS 仅用于验证用户名/密码对。因此,在可以使用 RADIUS 进行身份验证之前,用户必须已存在于数据库中。
当使用 RADIUS 认证时,将向配置的 RADIUS 服务器发送一个访问请求消息。此请求的类型将为 仅身份验证
,并且包含 用户名
、密码
(已加密)和 NAS 标识符
的参数。该请求将使用与服务器共享的密钥进行加密。RADIUS 服务器将以 访问接受
或 访问拒绝
响应此请求。不支持 RADIUS 记帐。
可以指定多个 RADIUS 服务器,在这种情况下,它们将按顺序尝试。如果从服务器收到否定响应,则身份验证将失败。如果没有收到响应,将尝试列表中的下一个服务器。要指定多个服务器,请使用逗号分隔服务器名称,并将列表用双引号括起来。如果指定了多个服务器,其他 RADIUS 选项也可以作为逗号分隔的列表给出,以便为每个服务器提供单独的值。它们也可以指定为单个值,在这种情况下,该值将应用于所有服务器。
RADIUS 支持以下配置选项:
radiusservers
要连接的 RADIUS 服务器的 DNS 名称或 IP 地址。此参数是必需的。
radiussecrets
与 RADIUS 服务器安全通信时使用的共享密钥。它在 PostgreSQL 和 RADIUS 服务器上必须具有完全相同的值。建议使用至少 16 个字符的字符串。此参数是必需的。
只有在 PostgreSQL 构建时支持 OpenSSL,使用的加密向量才是密码学安全的。在其他情况下,传输到 RADIUS 服务器的数据应仅被视为模糊处理,而不是安全,如果需要,应应用外部安全措施。
radiusports
在 RADIUS 服务器上连接的端口号。如果未指定端口,将使用默认的 RADIUS 端口 (1812
)。
radiusidentifiers
在 RADIUS 请求中用作 NAS 标识符
的字符串。例如,此参数可用于标识用户尝试连接的数据库集群,这对于 RADIUS 服务器上的策略匹配非常有用。如果未指定标识符,将使用默认的 postgresql
。
如果需要在 RADIUS 参数值中使用逗号或空格,可以通过将值用双引号引起来来完成,但这很麻烦,因为现在需要两层双引号。一个在 RADIUS 密钥字符串中放入空格的示例是
host ... radius radiusservers="server1,server2" radiussecrets="""secret one"",""secret two"""
如果您发现文档中的任何内容不正确,与您使用特定功能的体验不符,或者需要进一步说明,请使用此表单报告文档问题。