Methea is a framework providing authentication and access management for your Spring Boot Application
with minimum configuration, specifically for RESTful Webservice with JWE. No need to deal with users and permission stuffs.
Methea also provide UI Management Tool which is allows you to control & configure your system. (Under Developement)
Methea build on top of following frameworks:
Pre-requires
- Java 17 or above JDK as JAVA_HOME
- Maven as its build tool.
- Keystore generator
How to build
- Simply by checkout source code from our repository and using maven command
mvn clean installto build framework.
Support with Spring Boot 3.1.0 and later version of Spring Boot.
- Account - refer to company or organization
- Group - refer to department/team in organization
- JWTConfig - use for config JWT properties, such as expire datetime
- Permission - Bind with roles & resources
- Public Permission - Public resources must map into this table
- Resource - All endpoint in this systems
- Role - User role
- User - User information
-
Adding dependency to your spring boot application
<dependency> <groupId>io.github.metheax</groupId> <artifactId>auth</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> -
Config datasource of your choice
- Please note that currently, we're testing only with PostgreSQL
-
Adding spring-boot components scan
@SpringBootApplication(scanBasePackages = {"io.github.metheax", "your-reverse-domain"}) @EnableJpaRepositories(basePackages = {"io.github.metheax", "your-reverse-domain"}) @EntityScan(basePackages = {"io.github.metheax", "your-reverse-domain"}) public class MetheaHostApplication { public static void main(String[] args) { SpringApplication.run(WebServiceApplication.class, args); } }` -
Load pre-define data into your database
INSERT INTO public.core_account (account_id, created_date_time, created_user, status, updated_date_time, updated_user, account_address, account_code, account_email, account_name, account_name_oth) VALUES ('68bcf443-1b0c-49ff-877e-8650477383e8', '2021-06-13 10:57:36.711763', 'System', 'A', '2021-07-10 15:18:42.808053', 'admin', 'Phnom Penh, Cambodia.', 'METHEA', 'methea@localhost.com', 'Methea LLC.', 'មេធា'); INSERT INTO public.core_group (group_id, created_date_time, created_user, status, updated_date_time, updated_user, group_code, group_name, group_name_oth, remarks, account_id) VALUES ('366a7028-b623-49b0-8988-d711647051a5', '2021-06-13 10:57:36.729797', 'System', 'A', '2021-06-13 10:57:36.729797', 'System', 'M_SYS_ADMIN', 'System Admin', 'អេតមីនប្រព័ន្ធ', null, '68bcf443-1b0c-49ff-877e-8650477383e8'); INSERT INTO public.core_resource (resource_id, created_date_time, created_user, status, updated_date_time, updated_user, resource_name) VALUES ('ad5ea55c-547a-4537-8797-e3714c64d8a3', '2021-06-13 10:57:36.748761', 'System', 'A', '2021-06-13 10:57:36.748761', 'System', '/**'); INSERT INTO public.core_role (role_id, created_date_time, created_user, status, updated_date_time, updated_user, role_code, name, name_oth) VALUES ('33525a14-0ebc-4a3e-ada5-bd3ef94c9495', '2021-06-13 10:57:36.742761', 'System', 'A', '2021-06-13 10:57:37.016415', 'System', 'ROLE_ADMIN', 'Admin', 'អេតមីន'); INSERT INTO public.core_user (user_id, created_date_time, created_user, status, updated_date_time, updated_user, email, first_name, first_name_oth, frc_usr_rst_pwd, identity_code, last_name, last_name_oth, password, phone, username, group_id) VALUES ('c6eff227-d496-486c-a72c-db2f92e06faa', '2021-06-13 10:57:37.015455', 'System', 'A', '2021-06-13 10:57:37.015455', 'System', 'admin@localhost.com', 'Admin', 'អេតមីន', 'N', '639691', 'Admin', 'អេតមីន', 'Gp/lBVv1VTKk3DLGiENtX4Ow1xLEUqIDRBpa+zuTJWT3IIqfC4m0SB1tpVDo1+BQHFnY90XmvbJE1JAMDfRSmA$vkDevdjMM9v+/BonOi6HX/+v3Syh5mrSMXssz5707LSlOrCiIj3O7Q50bg7mLeCl6GYKhad7GGQi7CKvP1KqnbvtS2eZMFevVHsYHsQD2UeMQqiP7nAQ1z12ZHMNc5QckXZgUPMqetTzhJMzDduJ9+nOrC3HlqSo43VoMg0k+EA', '+85569639691', 'admin', '366a7028-b623-49b0-8988-d711647051a5'); INSERT INTO public.core_user_roles (user_id, role_id) VALUES ('c6eff227-d496-486c-a72c-db2f92e06faa', '33525a14-0ebc-4a3e-ada5-bd3ef94c9495'); INSERT INTO public.core_permission (permission_id, created_date_time, created_user, status, updated_date_time, updated_user, resource_id, role_id) VALUES ('bdee9930-cbde-4e62-96d8-91df821a698b', '2021-06-13 10:57:36.763762', 'System', 'A', '2021-06-13 10:57:36.763762', 'System', 'ad5ea55c-547a-4537-8797-e3714c64d8a3', '33525a14-0ebc-4a3e-ada5-bd3ef94c9495');
-
Generate keystore for access token and refresh token
- We recommend using KeyStore Explorer to generate key store
- Place keystore under
resourcesdirectory asresources/keystore - Use below configuration in your
application.propertiesorapplication.yml
keystore-token-file= classpath:keystore/test.pfx keystore-token-password= 12345 keystore-token-alias= test keystore-key-token-password= 12345 keystore-refresh-token-file= classpath:keystore/test.pfx keystore-refresh-token-password= 12345 keystore-refresh-token-alias= test keystore-key-refresh-token-password= 12345
-
Sample project
- Still have doubt on how to integrate, here is our sample project
If you encounter any issues regarding this project, please create a GitHub Issue. Email me kuylim.tith@outlook.com If you need special support or customize for your organization.