You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

3.0 KiB

wpdAuth

The authenticator for the Waterproofing Data (WPD) Work Packages

How this project was created

This project was initially created using the spring initializr, together with the following dependencies:

  • Lombok. Java annotation library which helps to reduce boilerplate code.
  • Spring Web. Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container.
  • Spring Data JPA. Persist data in SQL stores with Java Persistence API using Spring Data and Hibernate.
  • PostgreSQL Driver. A JDBC and R2DBC driver that allows Java programs to connect to a PostgreSQL database using standard, database independent Java code.
  • Spring Security. Highly customizable authentication and access-control framework for Spring applications.

Dependencies

How to setup this project

Once the dependencies are properly installed, follow the steps below:

  • Clone the project locally
    $ git clone https://github.com/IGSD-UoW/wpdAuth.git
    $ cd wpdAuth
  • Start the PostgreSQL and run the scripts to create the database and get the load data.
  $ brew services start postgresql
  $ psql postgres
  postgres=# \conninfo
  postgres=# CREATE DATABASE wpdauth;
  postgres=# \c wpdauth
  wpdauth=# \i db/ddl.sql
  wpdauth=# \i db/sys_config.sql
  wpdauth=# \q
  • Install dependencies
  $ mvn install
  • Run the project
  $ mvn spring-boot:run

How to run this project

Navigate to http://localhost:8080/swagger-ui.html in your browser to check everything is working correctly. You can change the default port in the application.properties file.

  • Make a GET request to /users/me to check you're not authenticated. You should receive a response with a 403 with an Access Denied message since you haven't set your valid JWT token yet.
$ curl -X GET http://localhost:8080/users/me
  • Make a POST request to /users/signin with the default admin user we programatically created to get a valid JWT token
$ curl -X POST 'http://localhost:8080/users/signin?username=admin&password=admin'
  • Add the JWT token as a Header parameter and make the initial GET request to /users/me again
$ curl -X GET http://localhost:8080/users/me -H 'Authorization: Bearer <JWT_TOKEN>'
  • You should get a similar response to this one, meaning that you're now authenticated
{
  "id": 1,
  "username": "admin",
  "email": "admin@email.com",
  "roles": [
    "ROLE_ADMIN"
  ]
}