Portál AbcLinuxu, 30. dubna 2025 11:40
deploy.jar
, ktorý je súčasťou JRE a na linuxe ho mám v /usr/lib/java/jre/lib/deploy.jar
. Tento jar obsahuje niekoľko tried, ktoré nie sú súčasťou Java API. Napríklad je v ňom UIFactory
, ktorá má metódu showPasswordDialog(...)
a tá má parameter saveEnabled
. No a keď v ňom príde true
, tak checkbox bude a inak nebude. Neviem sa spoľahlivo dopátrať k tomu, odkiaľ je tá metóda volaná. Ale stiahol som si zdrojáky javy a v nich som hľadal volania showPasswordDialog(...). Väčšina z nich natvrdo posiela saveEnabled=false, ale DeployAuthenticator obsahuje:
isEncryptionEnabled = getCredentialManager().isPasswordEncryptionSupported(); ... info = UIFactory.showPasswordDialog(parentComponent == null ? null : parentComponent.get(), getMessage("password.dialog.title"), details, true, isDomainNeeded, cred, isEncryptionEnabled, authDisplayString );a mám pocit, že práve táto trieda je zavolaná v tom mojom prípade. Metóda
getCredentialManager()
vracia objekt triedy CredentialManager
. A v nej je natvrdo napísané,
protected boolean isPasswordEncryptionSupported() { // not available in base class return false; }Z toho vyplýva, že pokiaľ niekto z tej triedy nezdedí na nenapíše vlastnú implementáciu, tak sa heslá ukladať nebudú. No a kto dedí z CredentialManager? Na moje prekvapenie MSCredentialManager, kde to MS na začiatku znamená samozrejme Microsoft. V tejto triede je natívna trieda, ktorá sa pokúsi loadnúť Crypt32.dll atď, atď. Zaujímavé na tom je, že akosi neexistuje ekvivalentná linuxová implementácia. To ma tak zarazilo, že som zabudol pátrať po tom, od čoho závisí pred-vyplnenie políčok s prihlasovacím menom a heslom. Mno, tak to by sme mali. Pokiaľ by sa niekomu chcelo overiť moje zistenia, nejak ich okomentovať alebo nebodaj navrhnúť ako dotiahnuť Oracle k pridaniu Linuxovej implementácie, bol by som rád.
Tiskni
Sdílej:
~/.java/deployment/security/auth.dat
. Iste by sa dala napísať javovská trieda, ktorá by to integrovala s KDE Wallet, Gnome keyring, alebo trebárs Password Safe. Ale je to oštara. Java na Linuxe šifrovať vie, tak prečo by mala mať menšiu funkcionalitu, ako na Windowsoch?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.