这种认证方法的操作方式与 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"""
如果您发现文档中的任何内容不正确,与您使用特定功能的体验不符,或者需要进一步说明,请使用此表单报告文档问题。