Benutzerrechte im Programm vergeben

Status
Nicht offen für weitere Antworten.

Antimon

Mitglied
Hallo zusammen,

ich bin auf der Suche nach ein paar Tips, wie ich eine halbwegs vernünftige Benutzerverwaltung in mein Programm integrieren kann. Geht das irgendwie oder ist Java dafür nicht sonderlich gut geeignet?

Also vorab - ich habe mit PHP/MySQL usw. schon häufig mit Benutzern und deren Rechten rumhantiert, nur sind dort die Infos auf einem Server gespeichert und da kommt normalerweise niemand ran.

Wenn ich aber für eine Applikation Benutzerrechte vergebe, muss ich die ja irgendwo lokal speichern. Also ist das erste Problem: Wie soll so eine Datei aussehen? Ich könnte eine XML verwenden, aber da kann jeder nach Lust und Laune editieren und zumindest Einträge löschen, selbst wenn die Passwörter verschlüsselt sind. Also irgendeine Binärdatei verwenden?

Und wie ist da ein vernünftiger Ansatz? Auf die Datei muss ja prinzipiell jeder Benutzer zugreifen können um "seine" Rechte auslesen zu können, darf diese aber auch nicht manipulieren können. Und mit einem im Programmcode hinterlegten Master-Passwort zu arbeiten ist bei Java vermutlich auch nicht sonderlich sicher, vor allem nicht wenn es sich um ein quelltextoffenes Programm handelt.

Gibts da also überhaupt einen vernünftigen Schutz oder kann ich das gleich vergessen (zumindest ohne externe Datenbanken oder so)? Also es geht mir nicht um geheime Bankdaten oder so, sondern lediglich ein halbwegs sicherer Manipulationsschutz, damit sich Leute nicht ohne weiteres Admin-Rechte holen können beispielsweise.
 
S

SlaterB

Gast
> damit sich Leute nicht ohne weiteres Admin-Rechte holen können beispielsweise.

wenn es eine Neuvergabe von Rechten gibt, dann kann sich doch jeder Nutzer beliebige Rechte zuteilen,
ob direkt in der Datei oder im Menü des Programms, das ist schon egal,

oder kann nur ein höhergestellter User anderen niederen Rechte vergeben?
wie sieht das ganze inital aus, wenn noch gar nichts eingestellt wurde?

geht man davon aus, dass ein oberster Richter korrekt angelegt ist, dann die von diesen abgelegten Rechte verschlüsseln,
also bei asymmetrischer Verschlüsselung mit dem privaten Schlüssel des höheren verschlüsseln,
so dass sie mit dem öffentlichen dann noch auslesbar und anwendbar sind,

nun kann jemand die ganze Datei löschen, aber dann hat eben niemand irgendwelche Rechte,
bis der oberste Rechtevergeber das ganze wieder einrichtet (wenn das auch der löschende sein kann, dann ist das schlecht),
genausogut kann man das ganze Programm löschen,

ob asymetrische Verschlüsselung mit Eingabe eines einfachen achtstelligen Passwort geht, weiß ich freilich nicht,
evtl. die längeren Schlüssel ablegen und nur mit dem einfachen Passwort verschlüsseln..

-------

abgesehen von der Integrität des obersten Rechte-Verschenker:
Problem wäre vielleicht noch, wenn es eine einmal fertig signierte Rechtevergabe gibt,
die sich jeder auf sein lokales System kopiert und einen passenden Usernamen anlegt

da bräuchte es irgendwas eindeutiges im Programm und in der Rechte-Datei,
die Mac-Adresse der Netzwerkkarte oder so, die Systemzeit der Installation,
falls man die in der Registry sicher ablegen kann (dann könnte man aber auch da die Nutzerrechte sicher speichern..)
keine Ahnung ;)

http://entwickler-forum.de/showthread.php?t=52812
 
G

Gast2

Gast
Moin,

Wie soll so eine Datei aussehen? Ich könnte eine XML[...]
XML ist gerade zu prädestiniert für diese Aktion

Auf die Datei muss ja prinzipiell jeder Benutzer zugreifen können um "seine" Rechte auslesen zu können, darf diese aber auch nicht manipulieren können.
jeder Benutzer hat darf eine Datei lesen, sofern die Datei von root (unter WiXP/Fista auch Administrator genannt) dafür vorgesehen wurde ... nicht jeder Benutzer darf in eine Datei schreiben, sofern die Datei von root (unter WiXP/Fista auch Administrator genannt) dafür vorgesehen wurde

Und mit einem im Programmcode hinterlegten Master-Passwort zu arbeiten ist bei Java vermutlich auch nicht sonderlich sicher,
das hat nichts mit Java zu tun ... das Reverse Engineering lässt sich auch auf C und Assembler anwenden (gut Aufwand für Ergebnisse ist größer)

Gibts da also überhaupt einen vernünftigen Schutz oder kann ich das gleich vergessen (zumindest ohne externe Datenbanken oder so)? Also es geht mir nicht um geheime Bankdaten oder so, sondern lediglich ein halbwegs sicherer Manipulationsschutz, damit sich Leute nicht ohne weiteres Admin-Rechte holen können beispielsweise.
wie oben schon angedautet ... nutze einfach die Möglichkeiten die das entsprechende Betriebsystem bietet ... Du kannst nicht anders ... wenn der Kunde keine Sicherheit auf seinen Rechnern wünscht, kannst Du auch nichts machen ... Du bist Programmierer und kein Zauberer

in einem aktuellen Projekt habe ich einfach einen Registry-Key angelegt der nur True oder False enthält um das Admin-Menü frei zu schalten ... wenn auf den Rechnern auch die Bediener mit Adminrechten arbeiten und sich das Menü freischalten - nicht mein Problem

hand, mogel
 

Antimon

Mitglied
Hmm... okay dass jemand der Admin-Rechte auf dem Rechner hat, das löschen oder bearbeiten kann, ist klar... und dass es eine 100%ige Sicherheit nicht gibt, auch.

Das heisst wohl es würde auf ne Private-/Public-Key-Verschlüsselung hinauslaufen? Gibts da evtl. bekannte Libs für Java, die man sich zu Nutze machen könnte?

Mit reinen Dateirechten und Registry würde ich nur ungern arbeiten, erstens weil das Ganze betriebssystemunabhängig laufen soll und zweitens weil ich mir vorstellen könnte dass es mit so recht systemnahen Aufrufen mit Java Probleme geben könnte - wobei ich mich da vermutlich täusche.

Wie würde denn das Ganze ablaufen wenn ich den anderen Weg gehen würde, also ein Passwort abspeichern möchte, das für den Login bei einem anderen Programm benötigt wird? Wenn nur überprüft werden soll (z.B. beim Programmlogin) ob ein Passwort stimmt, kann ich mir nen MD5-Hash davon abspeichern und dann den gespeicherten mit dem aktuellen Hash vergleichen - allerdings ist der gespeicherte Hash (zumindest theoretisch) nicht wieder in ein Passwort wandelbar. Wenn ich aber grad das möchte, wie gehe ich da am besten vor ohne dass der Benutzer jedes Mal ein Passwort eingeben muss?

Das letztere ist übrigens unabhängig vom ursprünglichen Problem...
 

Wildcard

Top Contributor
Wie würde denn das Ganze ablaufen wenn ich den anderen Weg gehen würde, also ein Passwort abspeichern möchte, das für den Login bei einem anderen Programm benötigt wird? Wenn nur überprüft werden soll (z.B. beim Programmlogin) ob ein Passwort stimmt, kann ich mir nen MD5-Hash davon abspeichern und dann den gespeicherten mit dem aktuellen Hash vergleichen - allerdings ist der gespeicherte Hash (zumindest theoretisch) nicht wieder in ein Passwort wandelbar. Wenn ich aber grad das möchte, wie gehe ich da am besten vor ohne dass der Benutzer jedes Mal ein Passwort eingeben muss?
Am besten finde ich den Eclipse Secure Storage. Dafür solltest du deine Anwendung dann in Equinox laufen lassen. Der Secure Storage macht sich zunutze was das Betriebssystem bietet und verschlüsselt damit die Daten. Auf MacOS den Keyring, auf Windows die Login Informationen usw.
Damit wird sichergestellt das nur ein ordentlich angemeldeter Benutzer seine Daten wieder entschlüsseln kann.
 

Antimon

Mitglied
Hmm das werd ich mir mal ansehen - allerdings für ein oder zwei nicht allzu sensible Passwörter, rentiert es sich da den Overhead von Equinox in Kauf zu nehmen oder gibt es da eine praktischere Alternative?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Sam96 JavaFX Benutzerrechte Allgemeine Java-Themen 6
D Benutzerrechte herausfinden Allgemeine Java-Themen 3
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
T Der Aufruf von CMD-Programm Allgemeine Java-Themen 30
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
districon Programm zum Durchsuchen von (Ebay-)Artikeln Allgemeine Java-Themen 1
T Addons im eigenen Programm Allgemeine Java-Themen 1
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
D Programm designen Allgemeine Java-Themen 1
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
O 2D-Grafik BioFarben-Programm soll auf Vollbild schalten Allgemeine Java-Themen 1
S Nachrichten Filter Programm Allgemeine Java-Themen 14
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Lukas2904 Swing Anzeigen lassen das das Programm geschlossen wurde Allgemeine Java-Themen 3
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
OSchriever Linux-Programm öffnen Allgemeine Java-Themen 6
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P Erstelltes Programm ist doppelt so groß Allgemeine Java-Themen 11
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
S Einfaches Programm programmieren Allgemeine Java-Themen 5
M kleines KI Programm Idee Allgemeine Java-Themen 7
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
N Programm startet nicht, nur per cmd Allgemeine Java-Themen 5
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
Joker4632 Methoden Befehl an bereits extern geöffnete Programm-spezifische Konsole senden Allgemeine Java-Themen 1
M Dieses Programm schneller machen? Allgemeine Java-Themen 2
R Programm zur Rekursion Allgemeine Java-Themen 5
N Quicksort Programm hängt sich auf Allgemeine Java-Themen 6
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
dereki2000 Programm veröffentlichen Allgemeine Java-Themen 14
mrbig2017 Threads Chat Programm mit Threads? Allgemeine Java-Themen 2
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
kodela Programm hängt in der Ereigniswarteschlange Allgemeine Java-Themen 13
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
P Programm darf nicht mehrfach startbar sein Allgemeine Java-Themen 16
S Programm hängt sich manchmal (selten) auf Allgemeine Java-Themen 9
JavaNewbie2.0 Programm nicht im Taskmanager schliesen können Allgemeine Java-Themen 15
J XML Datei mit installiertem Programm öffnen Allgemeine Java-Themen 7
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
JavaNewbie2.0 Programm bleibt "stehen" Allgemeine Java-Themen 2
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
Aruetiise Methoden .jar mit Programm öffnen Allgemeine Java-Themen 2
C anderes Programm schließen! Allgemeine Java-Themen 5
C Webseiten Programm problem Allgemeine Java-Themen 5
E Programm auf Installation prüfen Allgemeine Java-Themen 1
J Programm zum Download von CSV-Dateien Allgemeine Java-Themen 4
E Programm ohne Windowsrand(Vollbild) ? Allgemeine Java-Themen 5
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
J Schutz Programm Jar Exe Allgemeine Java-Themen 7
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
B Programm updaten mit FXLauncher Allgemeine Java-Themen 1
D Nicht quelloffenes Programm Allgemeine Java-Themen 5
F Java-Programm lizensieren Allgemeine Java-Themen 21
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
X Aus Programm "Installationsprogramm" machen Allgemeine Java-Themen 6
T Java Programm in Internetseite? Allgemeine Java-Themen 4
T Java Programm frisst RAM Allgemeine Java-Themen 6
H Alter Java-Programm läuft nicht mehr. Laut strace fehlt libpthread.so.0 Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
Neumi5694 Offenes Programm nutzen Allgemeine Java-Themen 4
L Java-Programm Zahlenkombinationen ausgeben Allgemeine Java-Themen 10
KaffeeFan Methoden Suche Methode um Programm kurz warten zu lassen Allgemeine Java-Themen 22
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
T Java Programm sauber beenden (Mac OS) Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben