# 21.11.RADIUS认证

此身份验证方法的操作与暗语但它使用RADIUS作为密码验证方法。RADIUS仅用于验证用户名/密码对。因此,用户必须已经存在于数据库中,才能使用RADIUS进行身份验证。

使用RADIUS身份验证时,将向配置的RADIUS服务器发送访问请求消息。此请求将是仅验证,并包括用户名,暗语(加密)和NAS标识符。将使用与服务器共享的密钥对请求进行加密。RADIUS服务器将通过以下两种方式响应此请求:访问接受访问拒绝.不支持RADIUS记帐。

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

RADIUS支持以下配置选项:

RadiusServer

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

辐射秘密

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

# 笔记

如果PostgreSQL是在支持OpenSSL的情况下构建的,那么所使用的加密向量在加密方面是强大的。在其他情况下,到RADIUS服务器的传输只应被认为是模糊的,不安全的,必要时应采取外部安全措施。

radiusports

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

放射识别器

要用作NAS标识符在RADIUS请求中。例如,此参数可用于标识用户试图连接到的数据库群集,这对于RADIUS服务器上的策略匹配非常有用。如果未指定标识符,则默认为postgresql将被使用。

如果必须在半径参数值中使用逗号或空格,可以通过在该值周围加双引号来实现,但这很繁琐,因为现在需要两层双引号。将空格放入RADIUS秘密字符串的示例如下:

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