Este artigo é uma continuidade de minha
dica anterior, onde abordei como gerar tokens TOTP a partir de chaves na base 32 com o oathtool, simulando o comportamento do cliente
Google Authenticator.
Nesta dica veremos outra alternativa, que é o
EAuthenticator, cujo nome vem de Electron Authenticator, ou seja, um clone do Google Authenticator escrito em
Electron.
Para quem não conhece, Electron é, a grosso modo, um conjunto de bibliotecas JavaScript derivada do React que nos permite criar aplicativos multiplataforma para desktop.
O projeto é distribuído sob licença GPL e seu repositório no GitHub é:
Pré-requisito
É necessário que você possua o
Node.js instalado no sistema. Se estiver usando Debian, Ubuntu e derivados, confira minha dica:
Como instalar última versão Node.js via repositório no Ubuntu, Debian e derivados [Dica]
Instalação
Primeiro vamos clonar o projeto:
git clone https://github.com/Nikolasel/EAuthenticator.git
Entre na pasta criada:
cd EAuthenticator
Instale as dependências:
npm install
Gere o arquivo de licenças licenses.json:
npm run license
Se chegou até aqui, tudo pronto! Para executar o aplicativo digite:
npm start
Clique no botão "+" para adicionar uma conta:
Gerando um arquivo binário
Ninguém vai querer ficar entrando no diretório raiz do projeto e executar "npm start" toda vez que quiser abrir o aplicativo, não é mesmo? Pois bem, vamos gerar um arquivo binário para o teu sistema operacional!
Estando no diretório raiz do projeto, digite:
npm run package-linux
Será gerado um binário dentro do diretório "release-builds", no meu caso:
ls release-builds
EAuthenticator-linux-x64
E dentro do subdiretório EAuthenticator-linux-x64 haverá um arquivo executável "EAuthenticator".
Agora basta executá-lo:
./release-builds/EAuthenticator-linux-x64/EAuthenticator
O problema é que o arquivo precisa de algumas bibliotecas que estão contidas no diretório no qual ele pertence, então não é possível mover o binário sozinho para outro diretório (você poderá no máximo criar um link simbólico em um diretório do PATH apontando para ele):
ls release-builds/EAuthenticator-linux-x64
chrome_100_percent.pak
chrome_200_percent.pak
EAuthenticator
icudtl.dat
libEGL.so
libffmpeg.so
libGLESv2.so
libVkICD_mock_icd.so
LICENSE
LICENSES.chromium.html
locales
natives_blob.bin
resources
resources.pak
snapshot_blob.bin
swiftshader
v8_context_snapshot.bin
version
Como resolver? Bom, a melhor solução será empacotar o aplicativo.
Criando um pacote .DEB
Para criar um pacote .DEB, estando no diretório raiz do projeto digite:
npm run create-installer-deb
Será gerado um arquivo .deb dentro de release-builds:
ls release-builds/*deb
eauthenticator_0.2.0~dev_amd64.deb
Instale o pacote com:
sudo dpkg -i release-builds/eauthenticator_0.2.0~dev_amd64.deb
Verificando:
dpkg -l eauthenticator
ii eauthenticator 0.2.0~dev-1 amd64 An Electron Desktop app compatible with Google Authenticator
Executando:
eauthenticator
Bônus: criando um pacote .RPM
Para criar um pacote RPM, primeiro instale o
rpm-build:
sudo dnf install rpm-build
Em seguida, no diretório raiz do projeto, execute:
npm run create-installer-rpm
Será gerado um arquivo .rpm dentro de release-builds:
ls release-builds/*rpm
Também é possível gerar um executável para Windows, mas este procedimento foge ao escopo do artigo.
Conclusão
EAuthenticator é mais uma mostra do poder do software livre. Tive pouco contato com a linguagem Electron, mas ela está se mostrando bem promissora para o desenvolvimento de aplicativos desktop multiplataforma. A quem se interessar, fica a dica de estudo durante essa quarentena, que pelo visto ainda irá render. Vale lembrar que Electron basicamente é JavaScript, então seu aprendizado é muito recomendável! Na pior das hipóteses você estará treinando seus conhecimentos em JavaScript, que hoje é a linguagem de programação mais utilizada no mundo.
Um bom ponto de partida no aprendizado da Electron é estudar o código do EAuthenticator.
Fonte:
https://github.com/Nikolasel/EAuthenticator