20.11. Autenticación RADIUS #

Este método de autenticación funciona de forma similar a password, con la diferencia de que utiliza RADIUS como método de verificación de contraseñas. RADIUS se emplea únicamente para validar las parejas de nombre de usuario y contraseña. Por lo tanto, el usuario ya debe existir en la base de datos antes de poder utilizar RADIUS para la autenticación.

Cuando se utiliza la autenticación RADIUS, se enviará un mensaje de solicitud de acceso (Access Request) al servidor RADIUS configurado. Esta solicitud será del tipo Authenticate Only, e incluirá parámetros para el nombre de usuario (user name), la contraseña (password, cifrada) y el identificador NAS (NAS Identifier). La solicitud se cifrará utilizando un secreto compartido con el servidor. El servidor RADIUS responderá a esta solicitud con Access Accept o bien con Access Reject. No hay soporte para la contabilidad (accounting) de RADIUS.

Se pueden especificar múltiples servidores RADIUS, en cuyo caso se probarán de forma secuencial. Si se recibe una respuesta negativa de un servidor, la autenticación fallará. Si no se recibe respuesta, se probará con el siguiente servidor de la lista. Para especificar varios servidores, separa los nombres de los servidores con comas y encierra la lista entre comillas dobles. Si se especifican varios servidores, las demás opciones de RADIUS también se pueden indicar como listas separadas por comas, para proporcionar valores individuales para cada servidor. También se pueden especificar como un único valor, en cuyo caso ese valor se aplicará a todos los servidores.

Se admiten las siguientes opciones de configuración para RADIUS:

radiusservers

Los nombres DNS o las direcciones IP de los servidores RADIUS a los que conectarse. Este parámetro es obligatorio.

radiussecrets

Los secretos compartidos utilizados al hablar de forma segura con los servidores RADIUS. Debe tener exactamente el mismo valor en los servidores PostgreSQL y RADIUS. Se recomienda que sea una cadena de al menos 16 caracteres. Este parámetro es obligatorio.

Note

El vector de cifrado utilizado solo será criptográficamente fuerte si PostgreSQL se compila con soporte para OpenSSL. En otros casos, la transmisión al servidor RADIUS debe considerarse únicamente ofuscada, no asegurada, y deben aplicarse medidas de seguridad externas si es necesario.

radiusports

Los números de puerto a los que conectarse en los servidores RADIUS. Si no se especifica ningún puerto, se utilizará el puerto RADIUS por defecto (1812).

radiusidentifiers

Las cadenas que se utilizarán como identificador NAS (NAS Identifier) en las solicitudes RADIUS. Este parámetro se puede utilizar, por ejemplo, para identificar a qué clúster de base de datos está intentando conectarse el usuario, lo que puede resultar útil para la coincidencia de políticas en el servidor RADIUS. Si no se especifica ningún identificador, se utilizará el valor por defecto postgresql.

Si es necesario tener una coma o un espacio en blanco en el valor de un parámetro RADIUS, esto se puede hacer poniendo comillas dobles alrededor del valor, pero resulta tedioso porque ahora se requieren dos capas de comillas dobles. Un ejemplo de cómo introducir espacios en blanco en las cadenas de secretos de RADIUS es:

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