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.7 KiB
3.7 KiB
wpdAuth
The authenticator for the Waterproofing Data (WPD) Work Packages. The complete Swagger documentation is available here.
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/urbanbigdatacentre/WPD-Auth.git
$ cd WPD-Auth
- 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=# CREATE SCHEMA auth;
wpdauth=# CREATE EXTENSION "uuid-ossp";
wpdauth=# \i db/ddl.sql
wpdauth=# \i db/sys_config.sql
wpdauth=# create user uwpdauth;
wpdauth=# alter user uwpdauth with encrypted password '<your really secure password>';
wpdauth=# GRANT USAGE ON SCHEMA auth TO uwpdauth;
wpdauth=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA auth TO uwpdauth;
wpdauth=# GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA auth TO uwpdauth;
wpdauth=# \q
-
Make sure the load mode ran successfully as described in the load folder
-
Install dependencies
$ mvn install
- Run the project
$ mvn spring-boot:run
- Run the project as a service most likely in a production environment (mind the '&' character at the end)
$ 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 a403
with anAccess 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/login?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"
]
}