Pregunta

Me gustaría utilizar un servidor LDAP (probablemente Apache directorio ) para gestionar datos de acceso y credenciales de una solicitud. De vez en cuando la aplicación tiene que trabajar fuera de línea (en un ordenador portátil) sin una conexión con el servidor LDAP.

¿Cuál es la mejor manera de replicar las credenciales necesitas cigarros?

Ya he pensado:

  • Uso Mitosis para replicar el servidor LDAP en el portátil.

    Sin embargo, sería una solución bastante "pesado" y complicado. Por otra parte mitosis no parece ser estar terminado todavía.

  • La exportación de las credenciales como archivo LDIF que podrían ser almacenados en la computadora portátil.

    Pero que iba a necesitar una manera de comprobar que el archivo LDIF en realidad viene desde el servidor LDAP (El archivo debe incluir una especie de firma). Por otra parte me gustaría rechazar archivos LDIF que no hayan sido actualizados desde hace más de una semana. Sería bueno si pudiera evitar la aplicación de firma y verificación de edad a mí mismo.

Cualquier otra idea o herramientas que me podrían ayudar?

Editar Editado: Yo tenía un aspecto en Kerberos porque el documentación de Java para Kerberos-API parece decir que es posible utilizar un billete en caché en un local de caché y pensé que esto podría ser una solución para mí. Por otra parte Kerberos se puede añadir como complemento al Directorio de Apache. Pero las tiendas de caché de Kerberos descifrados entradas (con el objetivo de compartirlas con otras aplicaciones). Yo necesito la versión encriptada del boleto para poder comprobar la contraseña de usuario durante una sesión sin conexión. Conclusión:. Kerberos no ofrece una solución simple para mi problema

¿Fue útil?

Solución 2

Aquí está la solución, decidí utilizar (ya he descrito en una edición a mi pregunta, pero me gustaría poder aceptar una respuesta a "cerrar" la pregunta):

Como no he encontrado otra solución, decidí usar una exportación de LDIF, añadir una marca de tiempo como comentario al principio del archivo y luego firmar el archivo. Para firmar el archivo calculo un valor hash (SHA-1) del archivo + una clave secreta. La firma se añade como comentario al principio del archivo. Para comprobar la firma elimino la primera línea del archivo firmado y volver a calcular el valor hash.

Otros consejos

El saber que será probablemente bien si el usuario tiene que iniciar la sesión una vez en línea antes de poder iniciar una sesión en línea , considere el siguiente algoritmo:

  1. usuario proporciona su aplicación con un (username + password)
  2. aplicación intenta ponerse en contacto con LDAP para la autenticación
    • trabajar en línea? (Por ejemplo, conexión con éxito)
      1. aplicación autentica contra LDAP mediante (username + password)
        • exitosa autenticación?
          1. tiendas de aplicaciones o actualizaciones hash(password) como (cached_credentials) para (username) en el almacenamiento local segura
          2. procede
          3. aplicación como autenticada [[STOP]]
        • falló la autenticación?
            procede
          1. aplicación como (credenciales incorrectas) no autenticados [[STOP]]
    • trabajar sin conexión? (Por ejemplo, error de red)
      1. aplicación intenta recuperar (cached_credentials) para (username) desde el almacenamiento local segura
        • existe (cached_credentials) AND más reciente que (1 week)?
          1. aplicación compara (cached_credentials) contra hash(password)
            • partido?
                procede
              1. aplicación como autenticada [[STOP]]
            • no puede competir?
                procede
              1. aplicación como (credenciales incorrectas) no autenticados [[STOP]]
        • (cached_credentials) no existe OR menos reciente que (1 week)?
          1. procede aplicación como no autenticado (error de red) [[STOP]]

Esto es (o era, IIRC), por cierto, el mismo modelo empleado por Windows NT + para autenticación de usuarios contra controladores de dominio. Al inicio de sesión se realiza un intento de autenticación en el controlador de dominio y crear o actualizar el (caché) versión local del perfil de usuario. Si el controlador de dominio no está disponible, se solicita al usuario para proceder a la autenticación con las credenciales capturadas en el perfil local (en caché) (si existe).


Editar

  • Si, esto es, en espíritu, la misma solución que la copia de un archivo LDIF localmente, excepto que usted no tiene que analizar ldif cuando no estés conectado. :)
  • Se entiende que se puede almacenar cualquier atributo adicional (permisos, etc.) en la memoria caché
  • También se entiende que 'almacenamiento seguro' es al menos firmado. :) Usted puede hacer esto con bastante facilidad con un hash SHA-1 y un secreto, o puede utilizar proveedores criptográficos de pleno derecho disponibles en su plataforma (o en Java, si el uso de Java.) No es necesario que la cripta que siempre como ninguna información secreta se almacena en el interior.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top