{"id":55001190,"date":"2019-06-01T00:00:00","date_gmt":"2024-06-07T21:47:27","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1190"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Benutzerverwaltung_mit_verschluesselten_Kennwoertern","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/","title":{"rendered":"Benutzerverwaltung mit verschl&uuml;sselten Kennw&ouml;rtern"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg06.met.vgwort.de\/na\/05803b55f63241389b99801fdaad9079\" width=\"1\" height=\"1\" alt=\"\"><b>Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und Kennwort an die Anwendung anmelden, sollten Sie sehr sensibel mit den in der Anwendung gespeicherten Kennw&ouml;rtern umgehen. Das geht am einfachsten, wenn Sie die Kennw&ouml;rter verschl&uuml;sselt speichern. Damit verringern Sie die Wahrscheinlichkeit, dass jemand die Kennw&ouml;rter entschl&uuml;sselt und f&uuml;r seine Zwecke nutzen kann, erheblich. Dieser Artikel stellt eine kleine Benutzerverwaltung vor, mit der Sie Benutzer und Benutzergruppen verwalten und auch Berechtigungen f&uuml;r verschiedene Tabellen vergeben k&ouml;nnen.<\/b><\/p>\n<h2>Die Benutzerverwaltung<\/h2>\n<p>Zur Benutzerverwaltung geh&ouml;ren einige Tabellen, mit denen wir die Benutzer, die Benutzergruppen, die Zuordnung der Benutzer zu den Benutzergruppen, die Tabellen, f&uuml;r die wir Berechtigungen vergeben wollen, sowie die Berechtigungen selbst verwalten wollen.<\/p>\n<p>Au&szlig;erdem geh&ouml;rt dazu ein Formular f&uuml;r die Anmeldung des jeweiligen Benutzers. Dieses nimmt den Benutzernamen und das Kennwort entgegen und pr&uuml;ft, ob ein passendes Paar dieser beiden Daten in der Tabelle der Benutzer gefunden werden kann. In diesem Fall soll eine tempor&auml;re Variable mit dem Namen des Benutzers gef&uuml;llt werden.<\/p>\n<p>Weitere Mechanismen, welche die Pr&uuml;fung der Berechtigungen dieses Benutzers beim Zugriff auf die Daten durchf&uuml;hren, nutzen den Inhalt dieser Variablen. Diese Mechanismen stellen wir beispielsweise im Beitrag <b>Zugriffsrechte mit Datenmakros<\/b> (<b>www.access-im-unternehmen.de\/1193<\/b>) vor.<\/p>\n<h2>Tabellen der Benutzerverwaltung<\/h2>\n<p>Die erste Tabelle der Benutzerverwaltung hei&szlig;t <b>tblBenutzer <\/b>und dient zum Speichern der Benutzerdaten, in diesem Fall des Benutzernamens und des Kennworts. Der Entwurf dieser Tabelle sieht wie in Bild 1 aus. F&uuml;r das Feld <b>Benutzername <\/b>legen wir einen eindeutigen Index fest, damit kein Benutzername zwei Mal vergeben werden kann. Au&szlig;erdem f&uuml;gen wir noch ein Feld namens <b>KennwortZuletztGeaendertAm <\/b>mit dem Datentyp <b>Datum\/Uhrzeit <\/b>hinzu, das speichert, wann das Kennwort des Benutzers zuletzt ge&auml;ndert wurde.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_001.png\" alt=\"Tabelle zur Verwaltung der Benutzer\" width=\"549,6265\" height=\"354,1667\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Tabelle zur Verwaltung der Benutzer<\/span><\/b><\/p>\n<p>Die Tabelle <b>tblBenutzergruppen<\/b> speichert die Namen der Benutzergruppen (siehe Bild 2). Das einzige Feld neben dem Prim&auml;rschl&uuml;sselfeld hei&szlig;t <b>Benutzergruppe <\/b>und besitzt ebenfalls einen eindeutigen Index, damit jede Benutzergruppe nur einmal angegeben werden kann.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_002.png\" alt=\"Tabelle zur Verwaltung der Benutzergruppen\" width=\"549,6265\" height=\"136,7231\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Tabelle zur Verwaltung der Benutzergruppen<\/span><\/b><\/p>\n<p>Um die Benutzer den Benutzergruppen zuzuordnen, erstellen wir eine weitere Tabelle namens <b>tblGruppenzuordnungen<\/b>. Diese enth&auml;lt neben dem Prim&auml;rschl&uuml;sselfeld <b>GruppenzuordnungID <\/b>noch zwei Fremdschl&uuml;sselfelder namens <b>BenutzerID <\/b>und <b>BenutzergruppeID<\/b>. Beide Beziehungen haben wir mit dem Nachschlageassistenten eingerichtet. Damit jeder Benutzer nur einmal zu jeder Benutzergruppe zugeordnet werden kann, f&uuml;gen wir der Tabelle einen zusammengesetzten, eindeutigen Index &uuml;ber die beiden Felder <b>BenutzerID<\/b> und <b>BenutzergruppeID <\/b>hinzu (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_003.png\" alt=\"Tabelle zur Zuordnung von Benutzern zu Benutzergruppen\" width=\"649,559\" height=\"389,9176\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Tabelle zur Zuordnung von Benutzern zu Benutzergruppen<\/span><\/b><\/p>\n<h2>Tabelle zum Speichern der Tabellen<\/h2>\n<p>Wir wollen f&uuml;r jede Benutzergruppe die Berechtigungen f&uuml;r den Zugriff auf die Tabellen der Datenbank festlegen. Dazu ben&ouml;tigen wir erst einmal eine Tabelle mit den Tabellen der Datenbank. Diese hei&szlig;t <b>tblTabellen <\/b>und sieht im Entwurf wie in Bild 4 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_004.png\" alt=\"Tabelle zum Speichern der Tabellennamen\" width=\"499,6607\" height=\"153,218\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Tabelle zum Speichern der Tabellennamen<\/span><\/b><\/p>\n<h2>F&uuml;llen der Tabelle mit Tabellennamen<\/h2>\n<p>Damit das Eintragen der Tabellen nicht zu aufwendig wird, haben wir eine kleine Prozedur geschrieben, mit der Sie die Bezeichnungen der Tabellen schnell in die Tabelle <b>tblTabellen <\/b>eintragen k&ouml;nnen. Diese finden Sie in Listing 1. Die Prozedur durchl&auml;uft alle Elemente der Auflistung <b>TableDefs <\/b>des <b>Database<\/b>-Objekts f&uuml;r die aktuelle Datenbank. Dabei legt es jeweils einen neuen Datensatz in der Tabelle <b>tblTabellen <\/b>an und tr&auml;gt die Bezeichnung der Tabelle ein. Dabei untersucht die Prozedur noch die Bezeichnung der Tabelle und tr&auml;gt nur solche Tabellenbezeichnungen ein, die nicht mit <b>MSys <\/b>(Systemtabellen) oder <b>~ <\/b>beginnen (tempor&auml;re Tabellen).<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>TabellenEintragen()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>tdf<span style=\"color:blue;\"> As <\/span>DAO.TableDef\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     For Each tdf In db.TableDefs\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> tdf.Name Like \"MSys*\" And <span style=\"color:blue;\">Not<\/span> tdf.Name Like \"~*\"<span style=\"color:blue;\"> Then<\/span>\r\n             On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n             db.Execute \"INSERT INTO tblTabellen(Tabelle) VALUES(''\" & tdf.Name & \"'')\", dbFailOnError\r\n             <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> tdf\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Prozedur zum Eintragen der Tabellennamen<\/span><\/b><\/p>\n<h2>Tabelle der Berechtigungen<\/h2>\n<p>Die Tabelle <b>tblBerechtigungen <\/b>soll festlegen, welche Berechtigungen f&uuml;r die Kombinationen aus Benutzergruppen und Tabellen festgelegt werden k&ouml;nnen. Dabei haben wir f&uuml;r diese Tabelle ausnahmsweise einmal kein Prim&auml;rschl&uuml;sselfeld mit dem Datentyp <b>Autowert <\/b>definiert, sondern eines mit dem Datentyp <b>Zahl<\/b>. Auf diese Weise k&ouml;nnen wir die Werte f&uuml;r das Prim&auml;rschl&uuml;sselfeld selbst vergeben. Das zweite Feld hei&szlig;t <b>Berechtigung <\/b>und soll die Bezeichnung der Berechtigung enthalten (siehe Bild 5). Auch f&uuml;r dieses Feld haben wir wieder einen eindeutigen Index festgelegt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_005.png\" alt=\"Tabelle zum Speichern der Berechtigungen\" width=\"499,6607\" height=\"124,1093\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Tabelle zum Speichern der Berechtigungen<\/span><\/b><\/p>\n<h2>Werte der Tabelle tblBerechtigungen<\/h2>\n<p>Warum aber wollen wir f&uuml;r das Prim&auml;rschl&uuml;sselfeld dieser Tabelle nicht die Autowert-Funktion verwenden? Weil wir die Werte f&uuml;r das Prim&auml;rschl&uuml;sselfeld selbst vergeben wollen. Diese sollen n&auml;mlich wie in Bild 6 aussehen. Die Berechtigung <b>Keine <\/b>erh&auml;lt beispielsweise den Wert <b>0<\/b>. <b>Lesen <\/b>erh&auml;lt den Wert <b>1<\/b>, <b>Anlegen <\/b>den Wert <b>2<\/b>, <b>&Auml;ndern <\/b>den Wert <b>4 <\/b>und <b>L&ouml;schen <\/b>den Wert <b>8<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_006.png\" alt=\"Werte der Berechtigungen\" width=\"424,7115\" height=\"200,8194\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Werte der Berechtigungen<\/span><\/b><\/p>\n<p>Das Muster ist leicht zu erkennen: Die Werte entsprechen allesamt Zweierpotenzen. Warum das? Weil die Berechtigungen kombinierbar sein sollen und wir die Kombinationen in einem einzigen Wert erfassen wollen. Wenn wir nur Zweierpotenzen f&uuml;r diese Werte verwenden, k&ouml;nnen wir durch Summieren der Werte einzelne Berechtigungen zusammenfassen.<\/p>\n<p>Der Wert <b>1 <\/b>w&uuml;rde bedeuten, dass der Benutzer nur lesende Rechte an der Tabelle hat. Der Wert <b>5 <\/b>(aus <b>1 + 4<\/b>) hei&szlig;t, der Benutzer hat Leserechte und darf die Datens&auml;tze &auml;ndern. Der Wert <b>15 <\/b>(aus <b>1 + 2 + 4 + 8<\/b>) bedeutet, dass der Benutzer alle Rechte an den Datens&auml;tzen der Tabelle hat. Wir schauen uns sp&auml;ter im Detail an, wie wir diese Werte nutzen k&ouml;nnen.<\/p>\n<h2>Alternative: Alle Kombinationen?<\/h2>\n<p>Die Alternative hierzu w&auml;re, gleich alle Kombinationen in der Tabelle zu speichern, also etwa noch Eintr&auml;ge hinzuzuf&uuml;gen wie <b>Lesen und Anlegen<\/b>, <b>Lesen und &Auml;ndern<\/b>, <b>Lesen und L&ouml;schen <\/b>bis hinzu zu <b>Lesen, Anlegen, Bearbeiten und L&ouml;schen<\/b>. Dann w&auml;re nur die Auswahl eines Eintrags f&uuml;r die Ermittlung aller Berechtigungen n&ouml;tig. Allerdings m&uuml;sste man dann auch immer, wenn man nur wissen will, ob der Benutzer einer Benutzergruppe etwa L&ouml;schrechte besitzt, den Zahlenwert interpretieren. Also fahren wir mit der Variante, bei der wir die einzelnen Rechte explizit und einzeln setzen m&uuml;ssen.<\/p>\n<h2>Tabellen zum Zuordnen der Berechtigungen<\/h2>\n<p>Fehlt noch eine Tabelle, mit der wir die verschiedenen Berechtigungen f&uuml;r die Kombination aus Benutzergruppe und Tabelle festlegen.<\/p>\n<p>Die Tabelle hei&szlig;t <b>tblBerechtigungszuordnungen<\/b> und sieht in der Entwurfsansicht wie in Bild 7 aus. Diese Tabelle hat gleich drei Fremdschl&uuml;sselfelder, mit denen die Datens&auml;tze der Tabellen <b>tblBenutzergruppen<\/b>, <b>tblTabellen <\/b>und <b>tblBerechtigungen <\/b>kombiniert werden. Damit auch hier jede Kombination nur einmal vorkommt, haben wir einen zusammengesetzten, eindeutigen Index f&uuml;r die drei Felder <b>BenutzergruppeID<\/b>, <b>TabelleID <\/b>und <b>BerechtigungID <\/b>angelegt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_007.png\" alt=\"Tabelle zur Zuordnung der Berechtigungen\" width=\"549,6265\" height=\"349,469\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Tabelle zur Zuordnung der Berechtigungen<\/span><\/b><\/p>\n<h2>Benutzer verwalten<\/h2>\n<p>F&uuml;r die Verwaltung der Benutzer und die Zuordnung zu den Benutzergruppen legen wir ein Formular an, dass an die Tabelle <b>tblBenutzer <\/b>gebunden ist. Zwei Listenfelder namens <b>lstZugewiesen<\/b> und <b>lstNichtZugewiesen <\/b>dienen der Zuweisung der Benutzergruppen zu den Benutzern (siehe Bild 8).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_008.png\" alt=\"Formular zum Verwalten der Benutzer\" width=\"499,6607\" height=\"366,7543\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Formular zum Verwalten der Benutzer<\/span><\/b><\/p>\n<p>Das erste Listenfeld zeigt alle Eintr&auml;ge der Tabelle <b>tblBenutzergruppen <\/b>an, die mit dem aktuell im Formular angezeigten Benutzer verkn&uuml;pft sind. Dazu legen wir f&uuml;r das Listenfeld die Abfrage mit dem Entwurf aus Bild 9 als Datensatzherkunft fest. Diese liefert alle Eintr&auml;ge der Tabelle <b>tblBenutzergruppen<\/b>, die &uuml;ber die Tabelle <b>tblGruppenzuordnungen <\/b>dem aktuellen Benutzer aus dem Formular zugeordnet sind.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_009.png\" alt=\"Datensatzherkunft des Listenfeldes lstZugewiesen\" width=\"549,6265\" height=\"318,6375\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Datensatzherkunft des Listenfeldes lstZugewiesen<\/span><\/b><\/p>\n<p>Als Datensatzherkunft f&uuml;r das zweite Listenfeld verwenden wir die Abfrage aus Bild 10. Als Kriterium verwenden wir eine abgespeckte Variante der Datensatzherkunft f&uuml;r das Listenfeld <b>lstZugewiesen<\/b>. Abgespeckt deshalb, weil eine Abfrage, die wir als Parameter der <b>NOT IN<\/b>&#8211; beziehungsweise <b>Nicht In<\/b>-Klausel verwenden, nur ein Feld zur&uuml;ckliefern darf &#8211; und in diesem Fall interessiert uns nur, welche Benutzergruppen bereits f&uuml;r den aktuellen Benutzer ausgew&auml;hlt sind.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_010.png\" alt=\"Abfrage zur Ermittlung aller nicht ausgew&auml;hlten Benutzergruppen\" width=\"700\" height=\"246,0089\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Abfrage zur Ermittlung aller nicht ausgew&auml;hlten Benutzergruppen<\/span><\/b><\/p>\n<p>&Uuml;ber die <b>Nicht In<\/b>-Klausel ermitteln wir dann alle Datens&auml;tze der Tabelle <b>tblBenutzergruppen<\/b>, die nicht in der als Parameter in Klammern angegebenen Abfrage enthalten sind. Die als Kriterium verwendete Abfrage sieht dann so aus:<\/p>\n<pre>Nicht In (SELECT tblBenutzergruppen.BenutzergruppeID \r\nFROM tblBenutzergruppen \r\nINNER JOIN tblGruppenzuordnungen \r\nON tblBenutzergruppen.BenutzergruppeID = \r\ntblGruppenzuordnungen.BenutzergruppeID \r\nWHERE tblGruppenzuordnungen.BenutzerID)=\r\n[Forms]![frmBenutzerVerwalten]![BenutzerID]<\/pre>\n<p>Damit die beiden Listenfelder nicht den Wert des Prim&auml;rschl&uuml;sselfeldes <b>BenutzergruppeID<\/b> anzeigen, sondern die Bezeichnung der Benutzergruppe, stellen wir die Eigenschaft <b>Spaltenanzahl <\/b>auf <b>2 <\/b>und die Eigenschaft <b>Spaltenbreiten <\/b>auf den Wert <b>0cm <\/b>ein.<\/p>\n<h2>Datensatzherk&uuml;nfte der Listenfelder beim Anzeigen eines Datensatzes aktualisieren<\/h2>\n<p>Wenn wir den im Formular angezeigten Benutzer aktualisieren, sollen auch die Daten der beiden Listenfelder aktualisiert werden. Dazu hinterlegen wir f&uuml;r die Ereignis-eigenschaft <b>Beim Anzeigen <\/b>die folgende Ereignisprozedur. Diese ruft f&uuml;r die beiden Listenfelder die <b>Requery<\/b>-Methode auf:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Current()\r\n     Me!lstNichtZugewiesen.Requery\r\n     Me!lstZugewiesen.Requery\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Gruppen zuordnen und entfernen per Doppelklick<\/h2>\n<p>Um eine Benutzergruppe zu einem Benutzer hinzuzuf&uuml;gen, muss der Benutzer den entsprechenden Eintrag des rechten Listenfeldes anklicken. Um eine Benutzergruppe zu entfernen, ist ein Doppelklick auf den Eintrag im linken Listenfeld n&ouml;tig.<\/p>\n<p>Der Doppelklick zum Entfernen eines Eintrags l&ouml;st die Ereignisprozedur aus Listing 2 aus. Die Prozedur pr&uuml;ft, ob sowohl das Feld <b>BenutzerID <\/b>im Formular als auch der angeklickte Eintrag im Listenfeld <b>lstZugeordnet <\/b>nicht den Wert <b>Null <\/b>enth&auml;lt. Nur dann kann der aktuell angeklickte Eintrag vom aktuellen Benutzer entfernt werden.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>lstZugewiesen_DblClick(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> IsNull(Me!BenutzerID) And <span style=\"color:blue;\">Not<\/span> IsNull(Me!lstZugewiesen)<span style=\"color:blue;\"> Then<\/span>\r\n         db.Execute \"DELETE FROM tblGruppenzuordnungen WHERE BenutzerID = \" & Me!BenutzerID _\r\n             & \" AND BenutzergruppeID = \" & Me!lstZugewiesen, dbFailOnError\r\n         Me!lstZugewiesen.Requery\r\n         Me!lstNichtZugewiesen.Requery\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Prozedur zum Entfernen einer Benutzergruppe eines Benutzers<\/span><\/b><\/p>\n<p>Das geschieht &uuml;ber den Aufruf einer <b>DELETE<\/b>-Abfrage, die genau den Eintrag mit der aktuellen <b>BenutzerID <\/b>und dem Wert des Listenfeldes <b>lstZugeordnet <\/b>aus der Tabelle <b>tblGruppenzuordnungen <\/b>entfernt. Damit diese &Auml;nderungen sich auch in den beiden Listenfeldern <b>lstZugeordnet <\/b>und <b>lstNichtZugeordnet <\/b>niederschlagen, aktualisieren wir beide mit der <b>Requery<\/b>-Methode.<\/p>\n<p>Klickt der Benutzer auf einen der Eintr&auml;ge des rechten Listenfeldes <b>lstNichtZugeordnet<\/b>, soll dieser Eintrag in das linke Listenfeld verschoben werden. Dazu pr&uuml;ft die Prozedur aus Listing 3, ob sowohl ein Benutzer im Formular angezeigt wird als auch ein Eintrag im Listenfeld angeklickt wurde. Ist das der Fall, f&uuml;gt sie in einer <b>INSERT INTO<\/b>-Abfrage einen neuen Datensatz mit den entsprechenden Werten zur Tabelle <b>tblGruppenzuordnungen <\/b>hinzu.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>lstNichtZugewiesen_DblClick(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> IsNull(Me!BenutzerID) And <span style=\"color:blue;\">Not<\/span> IsNull(Me!lstNichtZugewiesen)<span style=\"color:blue;\"> Then<\/span>\r\n         db.Execute \"INSERT INTO tblGruppenzuordnungen(BenutzerID, BenutzergruppeID) VALUES(\" & Me!BenutzerID & \", \" _\r\n             & Me!lstNichtZugewiesen & \")\", dbFailOnError\r\n         Me!lstZugewiesen.Requery\r\n         Me!lstNichtZugewiesen.Requery\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Prozedur zum Hinzuf&uuml;gen einer Benutzergruppe zu einem Benutzer<\/span><\/b><\/p>\n<p>Das sieht dann etwa wie in Bild 11 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_011.png\" alt=\"Das Formular frmBenutzerVerwalten in der Formularansicht\" width=\"499,6607\" height=\"331,9424\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Das Formular frmBenutzerVerwalten in der Formularansicht<\/span><\/b><\/p>\n<h2>Neuen Benutzer anlegen<\/h2>\n<p>Neue Benutzer f&uuml;gt man einfach &uuml;ber das soeben vorgestellte Formular hinzu. Neue Benutzer geh&ouml;ren zun&auml;chst keiner Benutzergruppe an, was sich aber durch einen Doppelklick auf den gew&uuml;nschten Eintrag &auml;ndern l&auml;sst.<\/p>\n<h2>Kennwort eintragen<\/h2>\n<p>Im Formular sehen Sie noch kein Kennwort im entsprechenden Textfeld. Dieses soll mit einem vom System vergebenen Kennwort gef&uuml;llt werden, dass der Benutzer dann vor der ersten Anmeldung &auml;ndern muss. Wie gehen wir das an? Wir machen das so, dass wir beim Anlegen eines Benutzers auf eine Schaltfl&auml;che klicken, welche das Kennwort generiert und damit zwei Dinge erledigt:<\/p>\n<ul>\n<li>Das Kennwort wird verschl&uuml;sselt und im Textfeld <b>Kennwort <\/b>gespeichert.<\/li>\n<li>Das Kennwort wird im Klartext inklusive Benutzername und einem entsprechenden Text in die Zwischenablage kopiert, deren Inhalt dann etwa per E-Mail an den Benutzer geschickt wird.<\/li>\n<\/ul>\n<h2>Kennwort ermitteln<\/h2>\n<p>Zum Ermitteln des Kennworts verwenden wir die Funktion <b>KennwortGenerieren<\/b>, die wir im Beitrag <b>Kennw&ouml;rter generieren <\/b>(<b>www.access-im-unternehmen.de\/1194<\/b>) ausf&uuml;hrlich beschreiben. Das Ergebnis lautet dann beispielsweise <b>o6$gG$H.#[<\/b>.<\/p>\n<p>Die Schaltfl&auml;che <b>cmdNeu <\/b>l&ouml;st die Prozedur aus Listing 4 aus. Diese ermittelt mit der Funktion <b>KennwortGenerieren <\/b>ein neues Kennwort, bestehend aus Gro&szlig;- und Kleinbuchstaben, Zahlen und Sonderzeichen. Das Kennwort wird dann mithilfe der Methode <b>GetSHA1 <\/b>der Klasse <b>clsCrypt <\/b>verschl&uuml;sselt und in verschl&uuml;sselter Form in das Feld <b>Kennwort <\/b>geschrieben.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdNeu_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>objCrypt<span style=\"color:blue;\"> As <\/span>clsCrypt\r\n     <span style=\"color:blue;\">Dim <\/span>strKennwort<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strKennwortVerschluesselt<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strNachricht<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> objCrypt = <span style=\"color:blue;\">New<\/span> clsCrypt\r\n     strKennwort = KennwortGenerieren(8, True, True, True, <span style=\"color:blue;\">True<\/span>)\r\n     strKennwortVerschluesselt = objCrypt.GetSHA1(strKennwort)\r\n     strNachricht = strNachricht & \"Die Zugangsdaten lauten:\" & <span style=\"color:blue;\">vbCrLf<\/span> & <span style=\"color:blue;\">vbCrLf<\/span>\r\n     strNachricht = strNachricht & \"Benutzername: \" & Me!Benutzername & <span style=\"color:blue;\">vbCrLf<\/span>\r\n     strNachricht = strNachricht & \"Kennwort: \" & strKennwort\r\n     Inzwischenablage strNachricht\r\n     <span style=\"color:blue;\">MsgBox<\/span> \"Benutzername und Kennwort wurden in die Zwischenablage kopiert.\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Prozedur zum Erstellen eines neuen Kennworts<\/span><\/b><\/p>\n<p>Au&szlig;erdem stellt die Prozedur einen Text zusammen, der etwa wie folgt aussieht, und kopiert diesen in die Zwischenablage:<\/p>\n<pre>Die Zugangsdaten lauten:\r\nBenutzername: User\r\nKennwort: S[j.iC4h<\/pre>\n<p>Von dort k&ouml;nnen Sie diesen in eine Mail an den entsprechenden Benutzer kopieren. Wir k&ouml;nnten auch direkt per Automation eine solche E-Mail erstellen, aber das w&uuml;rde an dieser Stelle den Rahmen sprengen &#8211; au&szlig;erdem kann es auch sein, dass die Daten ausgedruckt und per Brief verschickt werden sollen. Mit dem Text in der Zwischenablage k&ouml;nnen Sie dann auf jeden Fall arbeiten.<\/p>\n<h2>Berechtigungen der Benutzergruppen f&uuml;r die Tabellen<\/h2>\n<p>Wir wollen die Berechtigungsvergabe einfach halten und keine direkte Vergabe von Berechtigungen an einzelne Benutzer vornehmen. Stattdessen sollen die Berechtigungen immer &uuml;ber die jeweils zugeordnete Benutzergruppe vergeben werden.<\/p>\n<p>Da jeder Benutzer einer, keiner oder auch mehreren Benutzergruppen zugeordnet sein kann, m&uuml;ssen wir au&szlig;erdem festlegen, wie wir mit verschiedenen Berechtigungen eines Benutzers am gleichen Objekt umgehen &#8211; also wenn der Benutzer beispielsweise &uuml;ber die Gruppe <b>Management <\/b>L&ouml;schrechte an der Tabelle <b>tblPersonal <\/b>hat, aber gleichzeitig in der Gruppe <b>Bestellannahme <\/b>ist, f&uuml;r die keine L&ouml;schrechte an dieser Tabelle definiert sind.<\/p>\n<p>In diesem Fall sollen die h&ouml;heren Berechtigungen greifen, der Benutzer soll als L&ouml;schrechte an der Tabelle <b>tblPersonal <\/b>erhalten.<\/p>\n<p>Die Festlegung der Berechtigungen f&uuml;r die einzelnen Benutzergruppen wollen wir in einer Art Matrix vergeben, bei die Berechtigungen oben dargestellt werden und die Objekte auf der linken Seite und die Elemente dazwischen durch ein entsprechendes Symbol angeben, ob die Berechtigung an dem jeweiligen Objekt f&uuml;r die per Kombinationsfeld ausw&auml;hlbare Benutzergruppe vergeben ist.<\/p>\n<p>Die Programmierung dieses Formulars stellen wir im Beitrag <b>Berechtigungen per HTML verwalten <\/b>vor (<b>www.access-im-unternehmen.de\/1191<\/b>). Das Ergebnis sieht dann etwa wie in Bild 12 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1190_012.png\" alt=\"Verwaltung der Berechtigungen in einer HTML-Tabelle\" width=\"599,593\" height=\"402,1998\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Verwaltung der Berechtigungen in einer HTML-Tabelle<\/span><\/b><\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Damit haben wir nun die f&uuml;r die Verwaltung von Berechtigungen ben&ouml;tigten Tabellen vorgestellt sowie zwei Formulare, mit denen Sie die Benutzergruppen und die enthaltenen Benutzer verwalten sowie die Berechtigungen f&uuml;r die einzelnen Tabellen-Objekte in Abh&auml;ngigkeit von der Benutzergruppe.<\/p>\n<p>Es fehlt nun noch die Umsetzung der Berechtigungen. Im Beitrag <b>Zugriffsrechte mit Datenmakros <\/b>(<b>www.access-im-unternehmen.de\/1193<\/b>) schauen wir uns beispielsweise an, wie Sie Zugriffsrechte direkt in den Tabellen umsetzen &#8211; zumindest, was das Schreiben, Anlegen und L&ouml;schen von Daten in den Tabellen der Datenbank betrifft.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>BenutzerverwaltungMitVerschluesseltenKennwoertern.accdb<\/p>\n<p>BenutzerverwaltungMitVerschluesseltenKennwoertern_64.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/D1E47B00-6C66-4FD8-9C46-25BA5B2BD19A\/aiu_1190.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und Kennwort an die Anwendung anmelden, sollten Sie sehr sensibel mit den in der Anwendung gespeicherten Kennw&ouml;rtern umgehen. Das geht am einfachsten, wenn Sie die Kennw&ouml;rter nur verschl&uuml;sselt speichern. Damit verringern Sie die Wahrscheinlichkeit, dass jemand die Kennw&ouml;rter entschl&uuml;sselt und f&uuml;r seine Zwecke nutzen kann, erheblich. Dieser Artikel stellt eine kleine Benutzerverwaltung vor, mit der Sie Benutzer und Benutzergruppen verwalten und auch Berechtigungen f&uuml;r verschiedene Tabellen vergeben k&ouml;nnen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662019,66032019,44000038],"tags":[],"class_list":["post-55001190","post","type-post","status-publish","format-standard","hentry","category-662019","category-66032019","category-Sicherheit"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Benutzerverwaltung mit verschl&uuml;sselten Kennw&ouml;rtern - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Benutzerverwaltung mit verschl&uuml;sselten Kennw&ouml;rtern\" \/>\n<meta property=\"og:description\" content=\"Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und Kennwort an die Anwendung anmelden, sollten Sie sehr sensibel mit den in der Anwendung gespeicherten Kennw&ouml;rtern umgehen. Das geht am einfachsten, wenn Sie die Kennw&ouml;rter nur verschl&uuml;sselt speichern. Damit verringern Sie die Wahrscheinlichkeit, dass jemand die Kennw&ouml;rter entschl&uuml;sselt und f&uuml;r seine Zwecke nutzen kann, erheblich. Dieser Artikel stellt eine kleine Benutzerverwaltung vor, mit der Sie Benutzer und Benutzergruppen verwalten und auch Berechtigungen f&uuml;r verschiedene Tabellen vergeben k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2024-06-07T21:47:27+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg06.met.vgwort.de\/na\/05803b55f63241389b99801fdaad9079\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"13\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Benutzerverwaltung mit verschl&uuml;sselten Kennw&ouml;rtern\",\"datePublished\":\"2024-06-07T21:47:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/\"},\"wordCount\":2374,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/05803b55f63241389b99801fdaad9079\",\"articleSection\":[\"2019\",\"3\\\/2019\",\"Sicherheit\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/\",\"name\":\"Benutzerverwaltung mit verschl&uuml;sselten Kennw&ouml;rtern - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/05803b55f63241389b99801fdaad9079\",\"datePublished\":\"2024-06-07T21:47:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/05803b55f63241389b99801fdaad9079\",\"contentUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/05803b55f63241389b99801fdaad9079\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Benutzerverwaltung mit verschl&uuml;sselten Kennw&ouml;rtern\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Benutzerverwaltung mit verschl&uuml;sselten Kennw&ouml;rtern - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/","og_locale":"de_DE","og_type":"article","og_title":"Benutzerverwaltung mit verschl&uuml;sselten Kennw&ouml;rtern","og_description":"Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und Kennwort an die Anwendung anmelden, sollten Sie sehr sensibel mit den in der Anwendung gespeicherten Kennw&ouml;rtern umgehen. Das geht am einfachsten, wenn Sie die Kennw&ouml;rter nur verschl&uuml;sselt speichern. Damit verringern Sie die Wahrscheinlichkeit, dass jemand die Kennw&ouml;rter entschl&uuml;sselt und f&uuml;r seine Zwecke nutzen kann, erheblich. Dieser Artikel stellt eine kleine Benutzerverwaltung vor, mit der Sie Benutzer und Benutzergruppen verwalten und auch Berechtigungen f&uuml;r verschiedene Tabellen vergeben k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/","og_site_name":"Access im Unternehmen","article_published_time":"2024-06-07T21:47:27+00:00","og_image":[{"url":"http:\/\/vg06.met.vgwort.de\/na\/05803b55f63241389b99801fdaad9079","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"13\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Benutzerverwaltung mit verschl&uuml;sselten Kennw&ouml;rtern","datePublished":"2024-06-07T21:47:27+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/"},"wordCount":2374,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/05803b55f63241389b99801fdaad9079","articleSection":["2019","3\/2019","Sicherheit"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/","url":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/","name":"Benutzerverwaltung mit verschl&uuml;sselten Kennw&ouml;rtern - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/05803b55f63241389b99801fdaad9079","datePublished":"2024-06-07T21:47:27+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/#primaryimage","url":"http:\/\/vg06.met.vgwort.de\/na\/05803b55f63241389b99801fdaad9079","contentUrl":"http:\/\/vg06.met.vgwort.de\/na\/05803b55f63241389b99801fdaad9079"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Benutzerverwaltung_mit_verschluesselten_Kennwoertern\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Benutzerverwaltung mit verschl&uuml;sselten Kennw&ouml;rtern"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001190"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001190\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001190"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}