ANWENDUNGSGESTALTUNG


Kennwortfelder
Ein Kennwortfeld ist ein Textfeld, in dem jedes Zeichen des geheimen Kennwortes eines Benutzers bei der Eingabe als Sternchen angezeigt wird. Der Inhalt des Kennwortfeldes ist nicht vor unbefugtem Zugriff sicher und ist in der InfoBox "Eigenschaften: Dokument" des IBM® Lotus® Notes®-Clients sichtbar. Es gibt verschiedene Möglichkeiten, den Inhalt eines Kennwortfeldes zu sichern. Wenn Sie Anwendung mit einem Kennwortfeld schützen möchten, können Sie den Inhalt dieses Feldes am besten sichern, indem Sie ihn nach Überprüfung des Eintrags nicht speichern. Verwenden Sie hierzu eine Formel, die das Feld löscht, sobald es überprüft wurde. Sie können dazu Eingabeumsetzungsformeln oder ein LotusScript QuerySave-Ereignis verwenden.

Beispiel: Eingabeumsetzungsformeln verwenden

Diese Formel ist eine Eingabeumsetzungsformel für ein Kennwortfeld. Wenn der Benutzer ein Kennwort eingibt, sucht IBM® Lotus® Domino(TM) den Benutzer im Domino-Verzeichnis und ruft das entsprechende HTTPPassword-Feld ab. Dann vergleicht Domino den Wert, den der Benutzer eingibt, mit dem Wert im Feld "HTTPPassword". Stimmen die Werte überein, wird die Nachricht "Kennwort korrekt" ausgegeben. Stimmen die Werte nicht überein, lautet die Nachricht "Sie haben ein falsches Kennwort eingegeben".

x:=@DbLookup("";"Server/Acme":"names.nsf";"($Users)";@Username;"HTTPPassword");

REM "Diese Formel vergleicht obigen Wert mit dem vom Benutzer eingegebenen Wert, nachdem dieser mithilfe der @Password-Hash-Funktion geprüft wurde, und meldet dem Benutzer, ob das eingegebene Kennwort richtig oder falsch ist.";

@if(@isError(x);@Prompt([OK];"Fehler";"Es ist ein Fehler aufgetreten");@Password(Password) = x;@Prompt([OK];"Kennwort korrekt";"Das eingegebene Kennwort ist richtig");@Prompt([ok];"Falsches Kennwort";"Sie haben ein falsches Kennwort eingegeben"));

REM "Durch diese Formel wird das Kennwortfeld gelöscht.";

@Unavailable

Beispiel: QuerySave-Ereignis verwenden

Dieses Script ermittelt, ob das Kennwortfeld ein Kennwort enthält. Ist dies der Fall, wird der Name des Dokumentenerstellers abgerufen und in gekürzter Form in das Feld "PublicEncryptionKeys" geschrieben. Dadurch wird das Kennwortfeld mit dem öffentlichen Schlüssel des Autors verschlüsselt. Es wird jedoch keine Suche im Domino-Verzeichnis zum Abrufen des Schlüssels durchgeführt. Dieser wird aus der ID-Datei des Benutzers bezogen.

Dim doc As NotesDocument

Dim db As NotesDatabase

Dim session As New NotesSession

Set db = session.CurrentDatabase

Set uidoc=Source

Set doc=source.Document

If doc.GetItemValue("Kennwort")(0) <> "" Then

    Set PkName = New NotesName(doc.GetItemValue("Author")(0))

    Call doc.ReplaceItemValue("PublicEncryptionKeys", PkName.Abbreviated )

End If

Beispiel 2: QuerySave-Ereignis verwenden

Dieses Script ermittelt, ob ein oder mehrere Kennwortfelder ein Kennwort enthalten. Wenn eins der Felder ein Kennwort enthält, ruft das Script die Werte aus dem Feld "Author" und dem Feld "OtherEditors" (das eine Gruppe enthalten kann) ab und erweitert dieses Feld, sodass es Namen enthält. Der Name wird in gekürzter Form in das Feld "PublicEncryptionKeys" geschrieben. Dadurch wird das Kennwortfeld effektiv mit den öffentlichen Schlüsseln für alle eindeutigen Einträge in den beiden Feldern verschlüsselt. Dies beinhaltet eine Suche im Domino-Verzeichnis, um die Schlüssel für alle aufgeführten Benutzer zu erhalten, es sei denn, der Name des aktuellen Benutzers ist der einzige Wert. Wenn mehr als ein Name gesucht werden muss, findet das Script die öffentlichen Schlüssel im Domino-Verzeichnis. Wenn nur nach dem Schlüssel des Autors gesucht werden muss, wird er aus der ID-Datei des Benutzers abgerufen.

Dim s As New NotesSession

Dim db As NotesDatabase

Dim doc As NotesDocument

Set db = s.CurrentDatabase

Dim UIDoc As NotesUIDocument

Set uidoc=Source

Set doc = uidoc.document

 

If (doc.GetItemValue("Kennwort1")(0) <> "") Or (doc.GetItemValue("Kennwort2")(0) <> "") Then

    Call doc.ReplaceItemValue("PublicEncryptionKeys",_
   Evaluate(|@Name([Abbreviate];@Unique(Author:OtherEditors))|,doc))

End If

Siehe auch