Je suis en train de lire divers articles en ligne sur la meilleure façon de stocker les mots de passe pour ce genre de but. Jusqu'à présent, le plus proche est d'ajouter le mot de passe à un fichier keystore créé via l'invite de commande. Avec cette approche tout ce que je peux faire est accéder à l'objet SecretKeyComment se connecter à MySQL de Java sans enregistrer le mot de passe en texte clair
SecretKeyEntry entry = (KeyStore.SecretKeyEntry)ks.getEntry("vault",new KeyStore.PasswordProtection(password));
SecretKey someKey = entry.getSecretKey();
System.out.println(someKey.getEncoded());
Cela fonctionne, mais pour accéder au SecretKeyEntry je dois passer le mot de passe du fichier de clés en tant que chaîne et appeler le texte brut méthode toCharArray
. Aussi à partir de là, comment puis-je réellement utiliser la valeur pour se connecter à MySQL.
Copie possible de [Crypter le mot de passe dans les fichiers de configuration?] (Http://stackoverflow.com/q/1132567/5221149) – Andreas
Il doit y avoir un mot de passe cleartext _somewhere_ si votre programme Java doit démarrer sans intervention manuelle. Si vous ne pouvez pas faire cela, vous devrez demander à quelqu'un de saisir manuellement le mot de passe au démarrage, ce qui ne fait que déplacer le problème ailleurs (qui a accès à la liste des mots de passe). Si vous cryptez le mot de passe dans la configuration, vous devrez stocker la clé de cryptage quelque part, et elle devra être protégée par un mot de passe, c'est donc «torturer tout le long». –
Merci @JimGarrison Avec l'enregistrement du mot de passe dans la configuration ou un fichier de propriétés ou l'une de ces méthodes. Existe-t-il une méthode pour utiliser la valeur cryptée pour se connecter à mysql workbench? – deco