Skip to content
/ emp Public

Two-Factor Authentication with Java and Google Authenticator

Notifications You must be signed in to change notification settings

mkovac700/emp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation


external-password-cybersecurity-and-data-privacy-parzival-1997-flat-parzival-1997

Dvostruka prijava

Jednostavna Java web aplikacija koja implementira sustav dvostruke prijave upotrebom Google Authenticatora
Saznajte više »


UvodOpis projektaKonfiguracijaUpotrebaKorišteni alati


📖 Uvod

Općenito

👦🏽 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

(povratak na vrh)

📝 Opis projekta

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.

emp

Š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:

emp

Za detalje kliknite ovdje.

(povratak na vrh)

⚙️ Konfiguracija

Preduvjeti

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


Priprema

  • 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) odaberite Resources > JDBC > JDBC Connection Pools

      • Kliknite na New te unesite kako slijedi:

      emp

      emp

      👉🏽 Na kartici General sada možete koristiti opciju Ping kako biste testirali vezu s bazom


    • JDBC Resource:

      • Unutar Payara Console (localhost:4848) odaberite Resources > JDBC > JDBC Connection Pools

      • Kliknite na New te unesite kako slijedi:

      emp

    👉🏽 Za više detalja kliknite ovdje.

(povratak na vrh)

🚀 Upotreba

  • 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)

      emp

    • Aplikacija je dostupna na adresi http://localhost:8080/emp_projekt/

      👉🏽 Unutar Payara Console > Applications kliknite na Launch te na poveznicu aplikacije.

  • Početna stranica:

    emp
  • Registracija korisnika s uputama za postavljanje Google Authenticatora:

    emp

    👉🏽 Sigurnosni ključ se nasumično generira svakim ponovnim učitavanjem stranice


  • Google Authenticator i TOTP:

    emp
  • Prijava korisnika s trenutnim TOTP:

    emp
  • Pokušaj prijave s pogrešnim TOTP:

    emp

(povratak na vrh)

⛏️ Korišteni alati

(povratak na vrh)

Releases

No releases published

Packages

No packages published