SVN con Windows Authentication

En el intento de integrar un poco mas los servicios de la red interna de la empresa, cambiamos de Seguridad de Texto Plano a Seguridad Integrada con Windows Authentication (SSPI).

Cual es la idea de esto? simplemente mantener un unico password por usuario para cualquier servicio que segurizado (lo que se conoce como single-sign-on).

El cambio es realmente sencillo de realizar. Lo unico que necesitamos es tener un Dominio de Windows que realice la autenticacion y el modulo SSPI de Apache (http://sourceforge.net/projects/mod-auth-sspi/).

Porque un modulo de Apache? porque SVN no maneja la seguridad de los directorios, sino que la misma esta a cargo del Servidor HTTP, que en este caso es Apache.

Ok, el paso a paso…

  1. Bajar el Modulo SSPI de Apache (http://sourceforge.net/projects/mod-auth-sspi/)
  2. Bajar el servicio Apache en el Servidor donde se encuentra SVN.
  3. Copiar el archivo “mod_auth_sspi.so” que se encuentra dentro del archivo que bajamos en el paso 1), al directorio “\httpd\modules” dentro del directorio donde se instalo SVN, o dentro del directorio donde se encuentra instalado Apache.
  4. Ahora necesitamos cambiar la configuracion de Apache. Para esto vamos al directorio “\conf” dentro del directorio donde se encuentra instalado Apache y editamos el archivo “httpd.conf”
    1. Agregar linea “LoadModule sspi_auth_module modules/mod_auth_sspi.so” luego de la ultima linea que comienze con “LoadModule”. Esto cargara el modulo SSPI en el proceso de Apache.
    2. Cambiar la configuracion de Location. A continuacion muestro como quedo mi configuracion:

      <Location /svn>
      DAV svn
      SVNParentPath C:\path_del_repositorio
      AuthType SSPI
      SSPIAuth On
      SSPIAuthoritative On
      SSPIDomain TUDOMINIO
      SSPIOfferBasic On
      AuthName “Mi Mensaje de Autorizacion”
      AuthzSVNAccessFile C:\path_del_archivo_de_accesos
      Require valid-user
      </Location>
    3. Es necesario eliminar o comentar (con # al inicio de la linea) la configuracion anterior de “AuthUserFile”, ya que ahora la autenticación se realiza  a través del dominio.
  5. Por ultimo sera necesario modificar el archivo de acceso o autorización. Este es el archivo del que se hace referencia en el key “AuthzSVNAccessFile” en la configuracion que modificamos anteriormente. En este archivo es necesario agregarle a todos los usuarios el Dominio al que pertenecen. Ej: Guido por Dominio\Guido.
  6. Iniciamos nuevamente el servicio Apache y si todo esta bien, iniciara normalmente.

Ya tenemos nuestro repositorio con seguridad integrada!

Obviamente sera necesario que el usuario Dominio\Guido exista en el dominio de windows, o cambiar al usuario Guido por el usuario de Dominio que utiliza esa persona.

Si el servicio Apache no inicia, es posible ver los errores de inicio del servicio en el EventViewer de Windows.