1 votos

Redirigir a los usuarios con Apache y LDAP

en el trabajo estamos teniendo el problema de que queremos redirigir a los usuarios dependiendo de si son miembros de un determinado grupo de LDAP, cuando tienen acceso a una dirección URL que es administrado a través de Apache2.

Hay tres casos:

  • El usuario proporciona sus credenciales válidas y ES miembro del grupo de LDAP => redirigir a la aplicación de ABC (funciona)
  • El usuario proporciona válido creds, pero no es miembro del grupo de LDAP => redirección de Mantenimiento de la Página (no funciona y es el problema)
  • Facilita el usuario no válido creds o hace clic en cancelar => redirigir a de Mantenimiento (obras)

Nuestro problema es: ¿Cómo podemos redirigir a los usuarios, si son válidos y que no sea miembro del grupo de LDAP "EL GRUPO"?

Ahora mismo la plantilla para introducir las credenciales se muestra ad finitum, a menos que usted haga clic en cancelar o un miembro del "GRUPO".

Nuestra aplicación ABC es alojado en nuestras instalaciones, que se ejecuta en Ubuntu. Nuestro proxy inverso es Apache 2.4.18-2ubuntu3.10 que se ejecutan en Ubuntu 16.04. Los clientes utilizan una amplia gama de navegadores y sistemas operativos de todo el mundo, por lo que el filtrado por IP no es una opción. El proxy inverso se encuentra en nuestra DMZ y el Servidor de aplicaciones situado en el exterior. Un NAT-Regla fue creada, de manera que ambos sistemas se pueden comunicar a través 8080 (el puerto de ABC).

Nuestro (de Prueba)de configuración se parece a esto:

<VirtualHost *:443>
    ServerName testabc.company.com

    SSLProxyEngine On
    SSLEngine On
    SSLCertificateKeyFile  /etc/ssl/private/our_company.key
    SSLCertificateFile /etc/ssl/certs/company_com/fullchain.cer


    ErrorLog ${APACHE_LOG_DIR}/LDAP_test_error.log
    CustomLog ${APACHE_LOG_DIR}/LDAP_test_access.log combined

    # error document shown to unauthorized users
    DocumentRoot /var/www/Maintenance_Page
    ErrorDocument 401 /TTT/index.html

        <Location />
            ProxyPass http://internal-vm-name:8080/
            ProxyPassReverse http://internal-vm-name:8080/
        </Location>

    # the following block applies to all proxied content
    <Proxy "*">
        AuthType Basic
        AuthBasicProvider ldap
        AuthUserFile /dev/null
        AuthName "Auth with our LDAP Server"

        # configuration of the mod_authnz_ldap module
        AuthLDAPURL "ldap://SOMETHING"
        AuthLDAPBindDN "FOO,BAR "
        AuthLDAPBindPassword "FOOBAR"

        # Only users belonging to group THE-GROUP can access ABC,
        # all others will see the error document specified above.
        Require ldap-group CN=THE-GROUP,OU=Company,DC=ad,DC=Company,DC=com
    </Proxy>
</VirtualHost>

# virtual host required to access images and style-sheets from the error document
<VirtualHost *:80>
    ServerName maintenance.company.com
    DocumentRoot /var/www/Maintenance_Page

    ErrorLog ${APACHE_LOG_DIR}/maintenance -error.log
    CustomLog ${APACHE_LOG_DIR}/maintenance.log combined
</VirtualHost>

# redirection from HTTP to HTTPS
<VirtualHost *:80>
    ServerName abc.company.com
    Redirect Permanent /  https://abc.company.com/
    Redirect /  https://abc.company.com/
</VirtualHost>

0voto

ixs Puntos 31

No hay una buena solución para su problema. Usted está utilizando HTTP Basic Auth lo que significa que el navegador está tratando de abrir una página, es conseguir un 401 estado con WWW-Authenticate: Basic realm="Lo que sea", encabezado enviado.

En ese momento el navegador muestra el cuadro de diálogo autenticación, y una vez que el usuario y la contraseña han sido introducidos, se los envía al servidor web dentro del encabezado de Autorización.

Si el servidor rechaza la solicitud, se enviará un 401 estado con el encabezado WWW-Authenticate de nuevo. El navegador se abrirá el cuadro de diálogo de nuevo ad infinitum. En ningún momento puede el servidor de decir que una contraseña es rechazado por buena.

Si se utiliza un mod_dbd copia de la base de datos, puede utilizar mod_rewrite para hacer una consulta SQL para el grupo y redirigir en consecuencia. No puedo creer que esto es posible con el LDAP Auth controlador.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: