Skip to content

Welcome to BankMate, a robust and secure web system built on the principles of Spring Security. This application exemplifies a mastery of Spring Security concepts, showcasing an in-depth understanding of authentication, authorization, and other essential security features.

Notifications You must be signed in to change notification settings

HosamUsf/BankMate

Repository files navigation

BankMate - Secure Banking Application

image

Welcome to BankMate, BankMate is a comprehensive web application that demonstrates a high level of expertise in secure web development, particularly in Spring Security. The project showcases advanced proficiency in authentication, authorization, and key security features, employing cutting-edge technologies such as JWT, OAUTH2, and a secure Authorization Server using KeyCloak.

Table of Contents

Overview

Explore the BankMate application, a culmination of knowledge and expertise in building secure web systems. Delve into the intricacies of Spring Security architecture, password management, security protocols, JWT, OAUTH2, and more. The application features a secure authorization server setup using KeyCloak and demonstrates role-based access control, providing a comprehensive solution for your security needs.

Key Features

Explore the diverse features of the BankMate application, designed to provide a secure and seamless banking experience:

  1. Spring Security Integration:

    • Harness the power of Spring Security for robust handling of authentication and authorization, ensuring a fortified security layer.
  2. Password Management:

    • Implement advanced password management techniques using PasswordEncoders to enhance the overall security of user credentials.
  3. Security Protocols:

    • Address critical security concerns such as CSRF and CORS, understanding their significance and implementing effective mitigation strategies.
  4. Authentication and Authorization:

    • Secure endpoint URLs using Ant, MVC, and Regex Matchers, establishing a reliable framework for user authentication and authorization.
  5. Custom Filters:

    • Create and implement custom filters to augment security measures, tailoring the application's defense against potential threats.
  6. JWT and OAUTH2:

    • Dive into the intricacies of JSON Web Tokens (JWT) and master the various grant type flows of OAuth2, enhancing authentication and authorization processes.
  7. Authorization Server Setup:

    • Implement a secure Authorization Server using KeyCloak, elevating the application's overall security architecture.
  8. Role-Based Access Control:

    • Apply fine-grained authorization rules using roles and authorities within the web application, ensuring precise access control.
  9. Method Level Security:

    • Implement method-level security in both web and non-web applications, safeguarding critical functionalities from unauthorized access.
  10. Social Login Integration:

    • Seamlessly integrate social login functionalities into the web application, providing users with convenient and secure authentication options.

Stay ahead of evolving security challenges with BankMate's comprehensive feature set, designed to fortify your banking application against potential threats.

How to Use

  1. Run the Application:

    • Execute the application using your preferred Java development environment or build tool.
    • Example command: mvn spring-boot:run
  2. Access the Application:

    • Once the application is running, navigate to http://localhost:8080 in your web browser.
  3. Explore the Features:

    • Familiarize yourself with the secure features of the application, including authentication, authorization, and social login integrations.
  4. Test User Access:

    • Log in using the provided test user credentials to experience different levels of access and permissions.

Prerequisites

Ensure you have the following prerequisites installed:

Installation

  1. Clone the Repository:
    git clone https://github.com/HosamUsf/BankMate.git
    cd BankMate
    

Configuration

  1. Application Properties:

    • Review and update the application.properties file to configure any necessary settings, such as database connections, security configurations, etc.
  2. External Services Configuration:

    • Configure external services (e.g., KeyCloak for authentication) by updating the necessary credentials and endpoints in the respective configuration files.
  3. Database Configuration:

    • If applicable, configure database connection details in the application.properties file or any other configuration files related to the database setup.

Contributing

Contributions are welcome! If you want to contribute to BankMate, please follow these steps:

  1. Fork the repository.
  2. Create a new branch for your feature or bug fix.
  3. Make your changes and commit them with a clear and concise commit message.
  4. Push your changes to your fork.
  5. Submit a pull request to the main branch of the original repository, explaining your changes.

License

This project is licensed under the Apache License 2.0.

About

Welcome to BankMate, a robust and secure web system built on the principles of Spring Security. This application exemplifies a mastery of Spring Security concepts, showcasing an in-depth understanding of authentication, authorization, and other essential security features.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published