hakdogan / ApacheShiro

:key: Using Apache Shiro JDBC Realm with MySQL Database

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status "Docker Pulls

Apache Shiro

This application demonstrates the use of the Apache Shiro JDBC Realm with MySQL Database in a Java Web Application(JSF2.2)

Exemplified topics

  • Authentication
  • Authorization
  • JDBC Realm
  • RememberMe functionality

The application uses the following SQL Schema

CREATE USER 'shiro_user'@'%' IDENTIFIED BY 'shiro';
GRANT ALL PRIVILEGES ON shiro.* TO 'shiro_user'@'%' WITH GRANT OPTION;

CREATE DATABASE `shiro`;

USE `shiro`;

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(100) COLLATE utf8_turkish_ci NOT NULL,
  `password` varchar(100) COLLATE utf8_turkish_ci NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username_UNIQUE` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci;

CREATE TABLE `userroles` (
  `userID` int(11) NOT NULL,
  `role` varchar(50) COLLATE utf8_turkish_ci NOT NULL,
  PRIMARY KEY (`userID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci;

Defined users

  • hakdogan
    • roles admin, guest
    • password 12345
  • guest
    • roles guest
    • password guest

Requirements

  • JDK 8 or later
  • Maven 3.0.0 or later
  • MySql 8.x.x

To compile

mvn clean install

To run

mvn liberty:run

or

sh run.sh

With Docker

docker-compose -f docker-compose.yml up --build

or

sh compose-up.sh

This option creates a MySql Server with the database and user needed by the web application then runs together with the app.

A screenshot of the application

About

:key: Using Apache Shiro JDBC Realm with MySQL Database


Languages

Language:HTML 77.4%Language:Java 18.2%Language:Dockerfile 1.8%Language:CSS 1.7%Language:Shell 0.9%