Frage

Ich möchte einen LDAP-Server verwenden (wahrscheinlich Apache Verzeichnis ) für einen Benutzernamen und Anmeldeinformationen zu verwalten Anwendung. Von Zeit zu Zeit muss die Anwendung offline arbeiten (auf einem Laptop) ohne eine Verbindung zum LDAP-Server.

Was ist der beste Weg, um die Anmeldeinformationen localy zu replizieren?

Ich habe schon daran gedacht:

  • Mit Mitose dem LDAP-Server auf dem Laptop zu replizieren.

    Aber es wäre eine ziemlich „schwer“ und komplizierte Lösung. Außerdem scheint Mitose noch nicht abgeschlossen sein wird.

  • Exportieren das Beglaubigungsschreiben als LDIF-Datei, die auf dem Laptop gespeichert werden.

    Aber ich würde einen Weg müssen prüfen, ob die LDIF-Datei aus dem LDAP-Server tatsächlich kommt (Die Datei eine Art Signatur enthalten soll). Außerdem würde Ich mag LDIF-Dateien abzulehnen, die für mehr nicht als eine Woche aktualisiert werden. Es wäre schön, wenn ich vermeiden könnte Unterzeichnung und Alter der Umsetzung überprüfen mich.

Jede andere Ideen oder Tools, die mir helfen könnte?

Herausgegeben Edit: Ich habe einen Blick auf Kerberos, weil die Dokumentation des Java-Kerberos-API scheint zu sagen, dass es möglich ist, eine im Cache gespeicherte Ticket in einem lokalen zu verwenden Cache und ich dachte, das könnte eine Lösung für mich sein. Außerdem kann Kerberos als Plugin Apache Directory hinzugefügt werden. Aber die Kerberos-Cache speichert entschlüsselten Karten (mit dem Ziel, sie mit anderen Anwendungen teilen). Ich würde die verschlüsselte Version des Tickets müssen in der Lage das Benutzerkennwort während einer Offline-Sitzung zu überprüfen. Fazit:. Kerberos keine einfache Lösung für mein Problem bieten

War es hilfreich?

Lösung 2

Hier ist die Lösung, die ich entschieden zu (ich beschrieben habe es bereits in einer Bearbeitung auf meine Frage, aber ich würde in der Lage wie eine Antwort auf „Schließen“ die Frage zu akzeptieren):

Da ich nicht ein andere Lösung gefunden habe, habe ich beschlossen, einen LDIF-Export zu verwenden, einen Zeitstempel als Kommentar am Anfang der Datei hinzufügen und dann die Datei signieren. Um sich anzumelden, die Datei I berechnen einen Hash-Wert (SHA-1) der Datei + einen geheimen Schlüssel. Die Signatur wird als Kommentar am Anfang der Datei hinzugefügt. Um die Signatur zu überprüfen ich die erste Zeile der signierten Datei zu entfernen und den Hash-Wert neu berechnet werden.

Andere Tipps

Zu wissen, dass wird es wohl in Ordnung sein, wenn der Benutzer einmal online anmelden müssen, bevor sie auf offline anmelden zu können, sollten Sie den folgenden Algorithmus:

  1. Benutzer bietet die Anwendung mit einem (username + password)
  2. Anwendung versucht LDAP für die Authentifizierung zu kontaktieren
    • online arbeiten? (Zum Beispiel der Verbindung erfolgreich)
      1. Anwendung authentifiziert gegen LDAP mit (username + password)
        • Authentifizierung erfolgreich?
          1. Anwendung speichert oder Updates hash(password) als (cached_credentials) für (username) in lokale sichere Speicherung
          2. Anwendung läuft wie authentifizierten [[STOP]]
        • Authentifizierung fehlgeschlagen?
          1. Anwendung läuft wie nicht-authentifizierten (falsche Anmeldeinformationen) [[STOP]]
    • Offline-Modus? (Zum Beispiel Netzwerkfehler)
      1. Anwendung versucht abrufen (cached_credentials) für (username) von lokalen sicheren Aufbewahrung
        • (cached_credentials) existiert AND aktueller als (1 week)?
          1. Anwendung vergleicht (cached_credentials) gegen hash(password)
            • Spiel?
              1. Anwendung läuft wie authentifizierten [[STOP]]
            • keine Übereinstimmung?
              1. Anwendung läuft wie nicht-authentifizierten (falsche Anmeldeinformationen) [[STOP]]
        • (cached_credentials) existiert nicht OR weniger aktueller als (1 week)?
          1. Anwendung läuft wie nicht-authentifizierten (Netzwerkfehler) [[STOP]]

Dies ist (oder war, IIRC), nebenbei gesagt, das gleiche Modell von Windows NT + für Benutzer verwendet Authentifizierung gegen Domänencontroller. Nach der Anmeldung wird ein Versuch zur Authentifizierung gegenüber dem Domänencontroller vorgenommen und erstellen oder die lokale (gecached) Version des Benutzerprofil zu aktualisieren. Wenn der Domänencontroller nicht verfügbar ist, wird der Benutzer aufgefordert, mit Authentifizierung gegen die Anmeldeinformationen in der lokalen (gecached) Profil erfasst, um fortzufahren (falls vorhanden).


Bearbeiten

  • Ja, das ist, im Geist, die gleiche Lösung wie das Kopieren eine LDIF-Datei lokal, mit der Ausnahme, dass Sie müssen ldif nicht analysieren, wenn Sie offline sind. :)
  • Es versteht sich, dass Sie zusätzliche Attribute speichern können (Berechtigungen, etc.) in den Cache
  • Es ist auch klar, dass ‚sichere Lagerung‘ ist zumindest unterzeichnet. :) Sie können mit einem SHA-1-Hash diese leicht genug tun und ein Geheimnis, oder Sie können vollwertiges Kryptografieanbieter auf Ihrer Plattform (oder in Java, wenn Java verwenden.) Verwenden, brauchen Sie es nicht Krypta so lange da keine geheimen Informationen im Inneren gespeichert.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top