Sistema de inicio de sesión del sitio web: listo para usar

Estoy creando un sitio web simple que básicamente alberga un montón de archivos PDF detrás de una aplicación de visor de PDF. Voy a vincular estos archivos PDF desde un sitio externo, pero necesito una forma de evitar que sean de acceso abierto. También hay un componente de visor de mapas interactivo que está alojado en el servidor (ESRI Web Appbuilder). Esto ya tiene su propio mecanismo de seguridad.

Estoy buscando una solución que me permita básicamente bloquear un servidor web completo (Apache en este caso, pero abierto a otras sugerencias), detrás de una pantalla de inicio de sesión. Idealmente, sería compatible con Active Directory y/o OAuth.

Conozco la autenticación básica de Apache, pero según tengo entendido, esto verificaría las credenciales en cada carga de página, lo que podría no hacer que nuestra gente de TI esté muy contenta y probablemente también ralentizaría un poco las cosas.

Respuestas (1)

Debería poder usar Basic con el módulo Apache HTTPD LDAP. Hay opciones para almacenar en caché los resultados, lo que debería apaciguar a su departamento de TI. El wiki de Samba - https://wiki.samba.org/index.php/Authenticating_Apache_against_Active_Directory - tiene detalles, por ejemplo:


Autenticación LDAP básica

Ejemplo de dónde necesita esto: desea que Apache permita el acceso a un directorio en su servidor web solo para usuarios de AD que son miembros de un grupo de AD definido (usé grupo testen el ejemplo). El nombre de usuario y la contraseña deben validarse contra AD.

  • Cree un nuevo usuario en ADUC o con samba-tool, que Apache usará para conectarse al AD (utilicé "apache-connect" en el ejemplo a continuación).
  • Agregue lo siguiente a su .htaccess o su httpd.conf ( vHost/directory/...directiva):

    AuthName "AD authentication"
    AuthBasicProvider ldap
    AuthType Basic
    AuthLDAPGroupAttribute member
    AuthLDAPGroupAttributeIsDN On
    AuthLDAPURL ldap://{AD-Hostname/IP}:389/cn=Users,dc={your Domain DN}?sAMAccountName?sub?(objectClass=*)
    AuthLDAPBindDN cn=apache-connect,cn=Users,{your Domain DN}
    AuthLDAPBindPassword {password} require ldap-group cn=test,cn=Users,{your Domain DN} 
    

    Con esta configuración, el nombre de usuario se busca solo en el contenedor "Usuarios" y debajo. Si desea buscar en cualquier unidad organizativa de su dominio, debe agregar

    REFERENCIAS desactivadas

    /etc/openldap/ldap.confa tu De lo contrario, el acceso no funciona y apache iniciará sesión auth_ldap authenticate: user xxx authentication failed; URI / [ldap_search_ext_s() for user failed][Operations error]!. Si sigue recibiendo este error después de desactivar las referencias, configure Apache para que se conecte al puerto Samba/AD 3268 (catálogo global de AD) en lugar del puerto estándar LDAP 389.

    ¡Asegúrese de que su archivo de configuración solo sea legible por el servidor web, debido a la contraseña!

  • Reinicie apache.

La misma página también tiene ejemplos de configuración para SSO del navegador, que pueden ser de su interés.