/ApacheShiro

:key: Using Apache Shiro JDBC Realm with MySQL Database

Primary LanguageHTML

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