Configuración de autenticación Kerberos para 1C: Servidor web Linux con servidor de aplicaciones Windows
Al publicar una base de datos 1C en un servidor web Linux con un servidor de aplicaciones Windows, las guías estándar de configuración de autenticación suelen ser insuficientes. Incluso si el registro técnico del servidor de aplicaciones muestra que la cuenta de usuario se pasa desde el servidor web, la plataforma sigue solicitando credenciales de inicio de sesión. La causa principal es la ausencia de un registro SPN para la cuenta de servicio que ejecuta el servidor de aplicaciones 1C.
Este detalle falta en la mayoría de los tutoriales, incluidos artículos populares en Infostart. La solución se descubrió experimentalmente al estudiar la autenticación Kerberos en Linux y Windows.
Requisitos de infraestructura
El escenario asume:
- Un servidor web (Apache/Nginx) en Linux con un módulo NTLM/Kerberos.
- Un servidor de aplicaciones 1C en Windows Server.
- Un Active Directory (AD) para la gestión de cuentas.
- IIS o un servicio similar en el servidor 1C para manejar las solicitudes.
La configuración preliminar incluye publicar la base de datos a través del servidor web, configurar mod_auth_kerb (para Apache) o nginx con scripts Lua para pasar encabezados de autenticación. El registro de 1C muestra la cuenta transmitida, pero la autenticación falla.
Solución de problemas
Verifique el registro técnico del servidor de aplicaciones (parámetros de inicio: -reg o a través de la consola del clúster). Busque entradas como:
{User: domain\username} desde servidor web
Si la cuenta es visible pero persisten las solicitudes de credenciales, el problema está con el SPN.
Pasos de diagnóstico:
- Ejecute
setspn -Q /para la cuenta de servicio 1C (por ejemplo,svc_1c). - Verifique la ausencia de un SPN en la salida.
- Pruebe el acceso a través de un navegador que admita NTLM (IE/Edge en zona de intranet).
- Revise los registros del servidor web:
grep -i kerberos /var/log/apache2/error.log.
Solución: Agregar un registro SPN
Cree un registro SPN para la cuenta de servicio que ejecuta el servidor de aplicaciones. El valor del SPN es arbitrario—no se usa en el tráfico, pero es necesario para la lógica de autenticación interna de 1C.
Comando en DC o máquina con RSAT:
setspn -S HTTP/fakespn.svc_1c.domain.local svc_1c
Donde:
HTTP/fakespn.svc_1c.domain.locales un SPN ficticio.svc_1ces la cuenta de servicio 1C.
Verifique con: setspn -L svc_1c. Después de agregar, reinicie el servidor de aplicaciones y pruebe el acceso.
La autenticación funcionará sin solicitudes de credenciales. La razón: la plataforma 1C verifica la existencia de un SPN antes de aceptar tokens Kerberos/NTLM.
Configuraciones adicionales de Kerberos
- Keytab en Linux: Use
ktutilpara agregar una clave para el principal de servicioHTTP/webserver.domain.local. - krb5.conf: Especifique el reino y KDC en
/etc/krb5.conf.
[realms]
DOMAIN.LOCAL = {
kdc = dc.domain.local
}
- Configuración de Apache (mod_auth_kerb):
<Location /1c>
AuthType Kerberos
AuthName "Inicio de sesión Kerberos"
KrblAuthRealms DOMAIN.LOCAL
KrbMethodNegotiate On
KrbsaveCredentials Off
</Location>
Puntos clave
- SPN es obligatorio: Incluso un SPN falso desbloquea la autenticación de 1C.
- Registros para depuración: Use el registro técnico de 1C y error.log del servidor web.
- Cuenta de servicio: Ejecute el servidor 1C bajo una cuenta de dominio con privilegios apropiados.
- Pruebas: Use
kiniten Linux para verificar Kerberos. - Seguridad: Limite los SPN solo a servicios necesarios.
— Editorial Team
Aún no hay comentarios.