Meine erster Gedanke ist nicht zielführend und ging von einem Zitat für Simpsons Kenner: "HA HA" bis hin zu: "Einer ist immer der Looser"
Der zweite Gedanke war: "mein herzliches Beileid!" (Machst Du Software Entwicklung beruflich? Komm doch zu uns - dann hast Du dieses Problem nicht mehr! *SCNR*)
Aber lassen wir den Spaß mal beiseite und kümmern wir uns etwas um die Problematik selbst:
a) Du arbeitest in der Java VM eigentlich losgelöst von vielen Dingen. Du setzt also auf dem auf, was das Betriebssystem Dir zur Verfügung stellt. Du hast dabei in der Regel keine explizite User-Anmeldung zum Betriebssystem und setzt darauf auf. Das ist etwas, das wunderbar funktioniert z.B. im Windows Domain Bereich: Du hast also einfach eine User-Anmeldung auf dem Betriebssystem und dann hat der User gewisse Rechte. Dank Windows Domain hast Du ein Rechtesystem innerhalb der Domain bzw. des Forrest. Damit musst Du dann nichts mehr machen innerhalb der Java Anwendung. Das alles nützt Dir aber vermutlich nichts, denn wenn dies Dein Szenario wäre, dann wäre vermutlich die Frage nicht gestellt worden.
(Evtl. noch als Anmerkung: Das geht auch mit nicht Windows Systemen. Es gibt auch auf anderen Systemen entsprechende Lösungen. Das ist halt Kerberos und da hat man auf dem Mac klist, kinit, .... Unter Linux gibt es da recht viel mit Samba und Co, .... )
b) Die diversen Mechanismen kann man dann auf Betriebssystemebene nutzen / konfigurieren. Das ist oft mit das Einfachste, aber macht es relativ komplex und ist dann natürlich nicht vom Betriebssystem unabhängig. Aber sowas kann man auch bauen - dann wird halt sowas wie ein net use aufgerufen (bei Windows) und bei anderen Systemen halt andere Befehle ...
c) Pure Java Lösungen - Da Java eine universelle Programmiersprache ist, kann sowas natürlich auch in Java selbst erfolgen. Der Dateizugriff ist halt dieses SMB Protokoll (Davon gehe ich erst einmal aus. Das ist halt so das übliche bei Netzlaufwerken. Die anderen Alternativen haben sonst keine LDAP Authentifizierung wie NFS oder sie sind deprecated wie Apple mit seinem AFP).
Wenn man da schaut, dann kommt man auf Lösungen wie:
https://www.jcifs.org/ oder
https://github.com/Waffle/waffle
Ob dies aber zielführend ist, weiss ich nicht, da ich damit keine Erfahrung habe.
Generell sollte aus meiner Sicht der Punkt a) genutzt werden. Da können Admins sich den Kopf zerbrechen, wie Systeme konfiguriert werden. Ansonsten hast Du ein sehr großes Thema an der Backe incl. Security, reagieren auf diverse Konfigurationen und neue Versionen, ...
Das sollten bitte andere machen und nicht wir Entwickler! (So wir nicht eben diese Produkte entwickeln. Die Entwickler bei Microsoft sollen sich da natürlich intensiv drum kümmern
)
Und man sollte ansonsten immer überlegen, was es für Alternativen gibt:
- Wenn es um File Transfer geht, dann gibt es da einige Protokolle, die nur für sowas da sind: FTPS, SFTP aber auch HTTPS und so.
- Gerade aus Sicht eines Entwicklers gibt es da auch Standards, die wir gerne nutzen da viel Arbeit durch Frameworks abgedeckt wird. Also REST Webservices fällt mir da direkt ein.