Jednostavna Java web aplikacija koja implementira sustav dvostruke prijave upotrebom Google Authenticatora
Saznajte više »
Uvod • Opis projekta • Konfiguracija • Upotreba • Korišteni alati
👦🏽 Autor | Marijan Kovač |
🧑🏽🏫 Nastavnik | Dr. sc. Sandro Gerić |
📚 Kolegij | Elektroničko i mobilno poslovanje |
🏛️ Ustanova | Sveučilište u Zagrebu Fakultet organizacije i informatike Varaždin |
📆 Godina polaganja |
2023 |
Sustav funkcionira na vrlo jednostavan način. Web aplikacija za svoj rad koristi dva temeljna resursa – bazu podataka za pohranjivanje informacija o korisničkom računu i Google Authenticator API za kreiranje tajnog ključa te provjeru ispravnosti jednokratne lozinke.
Korisnik web aplikacije za registraciju i prijavu u sustav, osim korisničkog imena i lozinke treba i mobilni uređaj koji će imati instaliran Google Authenticator i koji će predstavljati token, odnosno drugi korak u postupku njegove prijave.
Na slici je moguće vidjeti dizajn sustava ove aplikacije.
Što se tiče baze podataka, ona će sadržavati samo jednu tablicu u koju će se pohranjivati korisničko ime, lozinka te tajni ključ za Google Authenticator aplikaciju – jedinstven za korisnika, koji služi kao sjeme (eng. seed) za generiranje jednokratnih lozinki.
Izgled tablice:
Za detalje kliknite ovdje.
Za pokretanje rješenja bit će vam potrebno sljedeće:
-
Operativni sustav Linux (preporuka)
Za izradu rješenja korišten je Linux Mint na Oracle VirtualBox VM.
-
Java 17 ili veća:
- smjestite se u željeni direktorij za preuzimanja, npr:
cd /opt/alati/
- preuzmite Java OpenJDK 17.0.2:
curl https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz -O
- smjestite se u slijedeći direktorij (preporuka):
cd /usr/lib/jvm
- izdvojite arhivu:
sudo tar -xvf /opt/alati/openjdk-17.0.2_linux-x64_bin.tar.gz -C .
- podesite varijablu okruženja:
Otvorite datoteku
/etc/profile.d/jdk.sh
i promijenite/dodajte slijedeću liniju:
export JAVA_HOME=/usr/lib/jvm/jdk-17.0.2
-
restartirajte sustav (preporuka)
-
provjerite ispravnost instalacije:
java -version
Ako je sve bilo u redu, trebali biste dobiti rezultat sličan ovome:
openjdk version "17.0.2" 2022-01-18 OpenJDK Runtime Environment (build 17.0.2+8-86) OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
-
Maven (opcionalno):
- ažurirajte repozitorij:
sudo apt update
- instalirajte Maven:
sudo apt install maven
- provjerite ispravnost instalacije:
mvn -version
Ako je sve bilo u redu, trebali biste dobiti rezultat sličan ovome:
Apache Maven 3.6.3 Maven home: /usr/share/maven Java version: 17.0.2, vendor: Oracle Corporation, runtime: /usr/lib/jvm/jdk-17.0.2 Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "5.15.0-69-generic", arch: "amd64", family: "unix"
-
Eclipse IDE
Preuzmite i instalirajte Eclipse IDE. Konfigurirajte Eclipse IDE za Java 17 prema potrebi.
-
Payara
-
Preuzmite Payara Server 6.2023.4 (Web) na sljedećoj poveznici.
⚠️ Za projekt je korištena verzija 6.2023.4, međutim ista možda više nije dostupna, pa je potrebno preuzeti najnoviju verziju. To znači da naredbe u nastavku treba prilagoditi kako bi iste funkcionirale. -
Kopirati datoteku s
Downloads
na/opt/alati
-
Smjestiti se u direktorij
/opt
cd /opt
-
Izvršiti naredbu
sudo unzip alati/payara-6.2023.4.zip mv payara6/ payara-web-6.2023.4
-
Podesiti prava pristupa
⚠️ sudo chown -R {admin} payara-web-6.2023.4 sudo chgrp -R users payara-web-6.2023.4 sudo chmod -R g+w payara-web-6.2023.4
-
-
Baza podataka (phpmyadmin + mysql):
-
Instalirajte LAMP (preporuka):
sudo apt-get update sudo apt-get install -y tasksel sudo tasksel install lamp-server
Time će se instalirati svi potrebni alati za rad sa phpmyadmin-om. Za više informacija kliknite ovdje.
-
Moguće je i pojedinačno instalirati potrebne alate:
⚠️ Preskočiti ovaj korak ako je instaliran LAMP-
Instalirajte apache2 server:
sudo apt-get install apache2
-
Instalirajte mysql:
sudo apt-get install mysql-server
-
Instalirajte php:
sudo apt-get install php
-
-
Sada se može instalirati phpmyadmin:
sudo apt install phpmyadmin
-
Nakon instalacije posjetite
localhost/phpmyadmin
-
Zadani podaci za prijavu su:
username: root password: root
-
-
-
MySql Connector/J
-
Preuzmite MySql Connector/J
- Product Version: 8.0.32
- Operating System: Platform Independent
-
Dodajte preuzeti driver Payara serveru:
- Izvršite naredbu:
Smjestite se u direktorij Payara Web servera, npr:
/opt/payara-web-6.2023.4/bin
Potom izvršite naredbu:
asadmin add-library /path/to/mysql-connector-j-8.0.32.jar
⚠️ Potrebno je prilagoditi putanju onoj gdje se nalazi preuzeta datoteka. Prije toga je potrebno izvršiti raspakiravanje (extract).- Alternativno se može ručno dodati datoteka na sljedeću destinaciju:
/opt/payara-web-6.2023.4/glassfish/lib
⚠️ Možda će biti potrebno promijeniti prava pristupa
-
-
Klonirajte ovaj repozitorij:
https://github.com/mkovac700/emp.git
-
Otvorite projekt u Eclipse IDE:
-
File > Open Projects from File System... > Directory...
-
Odaberite korijenski direktorij projekta
-
-
Uvezite postavke konfiguracija za buildanje aplikacija u Eclipse IDE (preporuka):
-
File > Import... > Run/Debug > Launch Configurations > Browse...
-
Konfiguracije se nalaze u direktoriju:
emp/emp_projekt/config
-
-
Podesite bazu podataka:
-
Pokrenite Apache2 server i MySQL bazu podataka koristeći naredbe:
sudo service apache2 start sudo service mysql start
-
Posjetite stranicu
localhost/phpmyadmin
Za prijavu koristite
username: root password: root
-
Kreirajte novu bazu
-
Naziv:
emp_db
⚠️ Bitno je da naziv bude isti kako bi sve bilo kompatibilno s konfiguracijama projekta -
Collation:
utf8mb4_croatian_ci
⚠️ Važno je odabrati navedeni Collation kako ne bi došlo do grešaka kod kreiranja
-
-
Dodajte tablicu
korisnik
Uvezite ili kopirajte skriptu
emp/emp_projekt/scripts/emp_db.sql
-
-
Podesite JDBC Resource i Connection Pool
👉🏽 Za rad aplikacije baza se koristi kao DataSource, pa je potrebno kreirati JDBC Resource i Connection Pool unutar Payara servera
-
JDBC Connection Pools:
-
Unutar Payara Console (
localhost:4848
) odaberiteResources > JDBC > JDBC Connection Pools
-
Kliknite na
New
te unesite kako slijedi:
👉🏽 Na kartici
General
sada možete koristiti opcijuPing
kako biste testirali vezu s bazom
-
-
JDBC Resource:
-
Unutar Payara Console (
localhost:4848
) odaberiteResources > JDBC > JDBC Connection Pools
-
Kliknite na
New
te unesite kako slijedi:
-
👉🏽 Za više detalja kliknite ovdje.
-
-
Pokretanje Payara Web servera (ako nije pokrenut):
-
U direktoriju
emp/emp_projekt
otvorite terminal (Desni klik > Open in Terminal
) i izvršite naredbu:./scripts/pokreniServer.sh
-
Payara Console dostupna je na
localhost:4848
-
Klikom na
Applications
moguće je vidjeti popis isporučenih (deployanih) aplikacija -
Klikom na
server (Admin Server) > View Raw Log
moguće je uživo pratiti logove servera (kontrola rada aplikacija, iznimke i sl.)
-
-
-
Sada se može obaviti isporuka aplikacije:
-
Unutar Eclipse IDE izvršite konfiguraciju
emp_projekt - redeploy
⚠️ U slučaju greške kod deploya, provjeriti jesu li ispravno napravljeni svi prethodni koraci -
Provjeriti je li aplikacija isporučena na Payara server (
Payara Console > Applications
)
-
Aplikacija je dostupna na adresi
http://localhost:8080/emp_projekt/
👉🏽 Unutar
Payara Console > Applications
kliknite naLaunch
te na poveznicu aplikacije.
-
-
Početna stranica:
-
Registracija korisnika s uputama za postavljanje Google Authenticatora:
👉🏽 Sigurnosni ključ se nasumično generira svakim ponovnim učitavanjem stranice
-
Google Authenticator i TOTP:
-
Prijava korisnika s trenutnim TOTP:
-
Pokušaj prijave s pogrešnim TOTP: