Bom dia, estou com uma dúvida em relação a distribuição de meu programa a terceiros. Pode ser algo simples, mas falta-me conhecimento a respeito disto.
Então vamos lá, tenho uma aplicação que funciona em conjunto com o Banco de Dados MySQL, para acessar esse banco de dados eu possuo em minha aplicação o ip, porta, usuário e senha deste banco de dados, essas informações estão dentro de minha aplicação (via código e via arquivo config.
Eu queria saber qual é o procedimento padrão na programação java para se fazer a distribuição dessa aplicação sem expor a qualquer um o usuário e senha do meu banco de dados, como é feita esse acesso? Qual melhor forma de proteger ou simplesmente negar o contato de um cliente terceiro a essas informações? Tendo em vista que a aplicação será instala na máquina do cliente ele terá acesso ao APP e seu código fonte.
Os clientes vão usar a tua DB? Todos usam a mesma? Nesse caso deverias ter um servidor à frente da tua DB a expor por exemplos serviços REST e a tua aplicação comunica com o servidor e o servidor é que acede à BD.
Ou cada cliente deveria ter a sua base de dados? Aí deverias instalar o MySQL no cliente.
Pela tua questão parece que será mais o primeiro ponto. Tanto que não queres abrir o porto 3306 da tua BD na internet para os teus clientes acederem mas simplesmente teres um server https.
A aplicação é para de uso interno da área administrativa de empresas. O aplicativo é configurado a primeira vez pelo TI da empresa (este setor que no caso tem acesso ao banco de dados) e após a configuração faz a distribuição do aplicativo, na qual os demais funcionários em hipótese alguma podem ter o usuário/senha do banco de dados. Eles conseguem sim alterar o DB mas somente usando o aplicativo.
No caso em questão, eu colocava o login dentro de um arquivo .yml dentro do projeto, porém qualquer um pode decompilar meu código e conseguir este acesso.
Pelo o que entendi a minha solução seria usar serviçõs REST, porém não sou muito familiarizado com estes serviços, poderia me falar brevemente como funciona? Apenas para que eu tenha uma base e uma “direção” para estudar tais métodos.