Domanda

Vorrei utilizzare un server LDAP (probabilmente Apache directory ) per gestire gli account di accesso e le credenziali per un applicazione. Di tanto in tanto l'applicazione ha bisogno di lavorare offline (su un computer portatile) senza una connessione al server LDAP.

Qual è il modo migliore per replicare le credenziali localy?

ho già pensato:

  • Mitosis di replicare il server LDAP sul computer portatile.

    Ma sarebbe una soluzione piuttosto "pesante" e complicata. Inoltre mitosi sembra non essere essere ancora finito.

  • L'esportazione le credenziali in un file LDIF che possono essere memorizzati sul computer portatile.

    Ma avrei bisogno di un modo per verificare che il file LDIF proviene effettivamente dal server LDAP (Il file dovrebbe includere una sorta di firma). Inoltre vorrei respingere file LDIF che non sono essere aggiornato da più di una settimana. Sarebbe bello se potessi evitare di attuare la firma e l'età controllare me stesso.

Tutte le altre idee o strumenti che mi potrebbero aiutare?

Modifica Modificato: Ho dato un'occhiata al Kerberos perché il documentazione della Java-Kerberos-API sembra dire che è possibile utilizzare un biglietto nella cache in un locale cache e ho pensato che questo potrebbe essere una soluzione per me. Inoltre Kerberos può essere aggiunto come plugin per directory di Apache. Ma i negozi di cache Kerberos decifrati biglietti (che mira a condividerli con altre applicazioni). Avrei bisogno la versione criptata del biglietto per essere in grado di controllare la password utente durante una sessione in linea. Conclusione:. Kerberos non offre una soluzione semplice per il mio problema

È stato utile?

Soluzione 2

Ecco la soluzione ho deciso di usare (ho già descritto in una modifica alla mia domanda, ma vorrei in grado di accettare una risposta a "chiudere" la questione):

Non ho trovato un'altra soluzione, ho deciso di utilizzare un'esportazione LDIF, aggiungere un timestamp come commento all'inizio del file e poi firmare il file. Per firmare il file a calcolare un valore hash (SHA-1) del file di una chiave segreta +. La firma viene aggiunto come commento all'inizio del file. Per controllare la firma tolgo la prima riga del file firmato e ricalcolare il valore di hash.

Altri suggerimenti

Sapendo che sarà probabilmente ok se l'utente deve accedere una volta on-line prima di poter accedere offline , si consideri il seguente algoritmo:

  1. utente fornisce l'applicazione con un (username + password)
  2. applicazione tenta di contattare LDAP per l'autenticazione
    • di lavoro on-line? (Ad esempio connessione riuscita)
      1. applicazione l'autenticazione contro LDAP utilizzando (username + password)
        • di autenticazione successo?
          1. application store o aggiornamenti hash(password) come (cached_credentials) per (username) in deposito locale sicura
          2. procede
          3. applicazioni come autenticato [[STOP]]
        • di autenticazione fallita?
            procede
          1. applicazioni come (credenziali non corrette) non autenticati [[STOP]]
    • lavoro off-line? (Ad esempio errore di rete)
      1. applicazione tenta di recuperare (cached_credentials) per (username) dallo storage locale sicura
        • (cached_credentials) esiste AND più recente rispetto (1 week)?
          1. applicazione confronta (cached_credentials) contro hash(password)
            • partita?
                procede
              1. applicazioni come autenticato [[STOP]]
            • non può competere?
                procede
              1. applicazioni come (credenziali non corrette) non autenticati [[STOP]]
        • (cached_credentials) non esiste OR meno recente di (1 week)?
          1. applicazione procede come non autenticato (errore di rete) [[STOP]]

Questa è (o era, IIRC), tra l'altro, lo stesso modello impiegato da Windows NT + per l'autenticazione degli utenti contro i controller di dominio. Al momento del login viene effettuato un tentativo per autenticare contro il controller di dominio e creare o aggiornare la versione locale (cache) del profilo utente. Se il controller di dominio non è disponibile, all'utente viene richiesto di procedere con l'autenticazione contro le credenziali catturati nel (cache) del profilo locale (se ne esiste uno.)


Modifica

  • Sì, questo è, nello spirito, la stessa soluzione come copiare un file LDIF a livello locale, tranne che non c'è bisogno di analizzare ldif quando sei offline. :)
  • Si è capito che è possibile memorizzare eventuali attributi aggiuntivi (permessi, ecc) nella cache
  • E 'inoltre inteso che 'archiviazione sicura' è almeno firmato. :) È possibile farlo abbastanza facilmente con un hash SHA-1 e un segreto, oppure è possibile utilizzare provider di crittografia a tutti gli effetti disponibili sulla piattaforma (o in Java, se si utilizza Java.) Non è necessario per criptare il più a lungo come nessuna informazione segreta viene memorizzato all'interno.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top