From 356dd07ca081c31570a20d3f1699875475e19450 Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Tue, 27 Jan 2026 14:06:42 -0500 Subject: [PATCH] FINERACT-1932: Fineract modularization - fineract-security --- build.gradle | 2 + .../filter/FineractInstanceModeApiFilter.java | 0 .../notification/data/NotificationData.java | 0 .../service/UserNotificationService.java | 0 .../service/ClientReadPlatformService.java | 0 fineract-provider/dependencies.gradle | 1 + fineract-security/build.gradle | 77 +++++++++++++++ fineract-security/dependencies.gradle | 98 +++++++++++++++++++ .../api/AuthenticationApiResource.java | 0 .../api/AuthenticationApiResourceSwagger.java | 0 .../security/api/LoginController.java | 0 .../security/api/TwoFactorApiResource.java | 0 .../TwoFactorConfigurationApiResource.java | 0 .../security/api/UserDetailsApiResource.java | 0 .../api/UserDetailsApiResourceSwagger.java | 0 ...InvalidateTFAccessTokenCommandHandler.java | 0 .../UpdateTwoFactorConfigCommandHandler.java | 0 .../security/constants/TenantConstants.java | 0 .../TwoFactorConfigurationConstants.java | 0 .../constants/TwoFactorConstants.java | 0 ...neractJwtAuthenticationTokenConverter.java | 0 .../security/data/AccessTokenData.java | 0 .../data/AuthenticatedOauthUserData.java | 0 .../security/data/AuthenticatedUserData.java | 0 .../data/FineractJwtAuthenticationToken.java | 0 .../security/data/OTPDeliveryMethod.java | 0 .../security/data/OTPMetadata.java | 0 .../security/data/OTPRequest.java | 0 .../security/data/PlatformRequestLog.java | 0 .../data/TenantAuthenticationDetails.java | 0 .../data/TwoFactorConfigurationValidator.java | 0 .../security/domain/OTPRequestRepository.java | 0 .../domain/PlatformUserRepository.java | 0 .../security/domain/TFAccessToken.java | 0 .../domain/TFAccessTokenRepository.java | 0 .../domain/TwoFactorConfiguration.java | 0 .../TwoFactorConfigurationRepository.java | 0 .../AccessTokenInvalidIException.java | 0 .../exception/EscapeSqlLiteralException.java | 0 .../ForcePasswordResetException.java | 0 .../OTPDeliveryMethodInvalidException.java | 0 .../exception/OTPTokenInvalidException.java | 0 .../exception/ResetPasswordException.java | 0 .../security/filter/BusinessDateFilter.java | 0 .../TenantAwareAuthenticationFilter.java | 0 .../TenantAwareBasicAuthenticationFilter.java | 0 .../filter/TwoFactorAuthenticationFilter.java | 0 .../infrastructure/security/package-info.java | 36 +++++++ .../service/AccessTokenGenerationService.java | 0 .../service/AuthTenantDetailsService.java | 0 .../service/AuthTenantDetailsServiceJdbc.java | 0 .../CustomAuthenticationFailureHandler.java | 0 .../security/service/RandomOTPGenerator.java | 0 ...SpringSecurityPlatformSecurityContext.java | 0 .../SqlInjectionPreventerServiceImpl.java | 0 ...antAwareJpaPlatformUserDetailsService.java | 0 .../TwoFactorConfigurationService.java | 0 .../security/service/TwoFactorService.java | 0 .../UUIDAccessTokenGenerationService.java | 0 .../SelfServiceUserAuthorizationManager.java | 0 oauth2-tests/dependencies.gradle | 1 + settings.gradle | 1 + 62 files changed, 216 insertions(+) rename {fineract-provider => fineract-core}/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java (100%) rename {fineract-provider => fineract-core}/src/main/java/org/apache/fineract/notification/data/NotificationData.java (100%) rename {fineract-provider => fineract-core}/src/main/java/org/apache/fineract/notification/service/UserNotificationService.java (100%) rename {fineract-provider => fineract-core}/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java (100%) create mode 100644 fineract-security/build.gradle create mode 100644 fineract-security/dependencies.gradle rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResource.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResourceSwagger.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/api/LoginController.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorApiResource.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorConfigurationApiResource.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResourceSwagger.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/command/InvalidateTFAccessTokenCommandHandler.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/command/UpdateTwoFactorConfigCommandHandler.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/constants/TenantConstants.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConfigurationConstants.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/data/AccessTokenData.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedOauthUserData.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedUserData.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/data/OTPDeliveryMethod.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/data/OTPMetadata.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/data/OTPRequest.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/data/TenantAuthenticationDetails.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/domain/OTPRequestRepository.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/domain/PlatformUserRepository.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessTokenRepository.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfigurationRepository.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/exception/AccessTokenInvalidIException.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/exception/EscapeSqlLiteralException.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPDeliveryMethodInvalidException.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPTokenInvalidException.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/exception/ResetPasswordException.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java (100%) create mode 100644 fineract-security/src/main/java/org/apache/fineract/infrastructure/security/package-info.java rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/service/AccessTokenGenerationService.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsService.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/service/RandomOTPGenerator.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/service/SqlInjectionPreventerServiceImpl.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/service/TenantAwareJpaPlatformUserDetailsService.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationService.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorService.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/service/UUIDAccessTokenGenerationService.java (100%) rename {fineract-provider => fineract-security}/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAuthorizationManager.java (100%) diff --git a/build.gradle b/build.gradle index 655e26457..56ed56607 100644 --- a/build.gradle +++ b/build.gradle @@ -26,6 +26,7 @@ buildscript { fineractJavaProjects = subprojects.findAll{ [ 'fineract-core', + 'fineract-security', 'fineract-cob', 'fineract-validation', 'fineract-command', @@ -59,6 +60,7 @@ buildscript { 'fineract-client', 'fineract-client-feign', 'fineract-core', + 'fineract-security', 'fineract-cob', 'fineract-validation', 'fineract-command', diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/data/NotificationData.java b/fineract-core/src/main/java/org/apache/fineract/notification/data/NotificationData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/notification/data/NotificationData.java rename to fineract-core/src/main/java/org/apache/fineract/notification/data/NotificationData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/UserNotificationService.java b/fineract-core/src/main/java/org/apache/fineract/notification/service/UserNotificationService.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/notification/service/UserNotificationService.java rename to fineract-core/src/main/java/org/apache/fineract/notification/service/UserNotificationService.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java diff --git a/fineract-provider/dependencies.gradle b/fineract-provider/dependencies.gradle index ebf9d375c..08cf0a95c 100644 --- a/fineract-provider/dependencies.gradle +++ b/fineract-provider/dependencies.gradle @@ -40,6 +40,7 @@ dependencies { implementation(project(path: ':fineract-report')) implementation(project(path: ':fineract-tax')) implementation(project(path: ':fineract-loan-origination')) + implementation(project(path: ':fineract-security')) providedRuntime("org.springframework.boot:spring-boot-starter-tomcat") diff --git a/fineract-security/build.gradle b/fineract-security/build.gradle new file mode 100644 index 000000000..21a961958 --- /dev/null +++ b/fineract-security/build.gradle @@ -0,0 +1,77 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +description = 'Fineract Security' + +apply plugin: 'java' +apply plugin: 'eclipse' + +configurations { + providedRuntime // needed for Spring Boot executable WAR + providedCompile + compile() { + exclude module: 'hibernate-entitymanager' + exclude module: 'hibernate-validator' + exclude module: 'activation' + exclude module: 'bcmail-jdk14' + exclude module: 'bcprov-jdk14' + exclude module: 'bctsp-jdk14' + exclude module: 'c3p0' + exclude module: 'stax-api' + exclude module: 'jaxb-api' + exclude module: 'jaxb-impl' + exclude module: 'jboss-logging' + exclude module: 'itext-rtf' + exclude module: 'classworlds' + } + runtime +} + +apply from: 'dependencies.gradle' + +// Configuration for the modernizer plugin +// https://github.com/andygoossens/gradle-modernizer-plugin +modernizer { + ignoreClassNamePatterns = [ + '.*AbstractPersistableCustom', + '.*EntityTables', + '.*domain.*' + ] +} + +// If we are running Gradle within Eclipse to enhance classes with OpenJPA, +// set the classes directory to point to Eclipse's default build directory +if (project.hasProperty('env') && project.getProperty('env') == 'eclipse') { + sourceSets.main.java.outputDir = new File(rootProject.projectDir, "fineract-security/bin/main") +} + +eclipse { + project { + buildCommand([ LaunchConfigHandle: "/.externalToolBuilders/OpenJPA Enhance Builder.launch" ], 'org.eclipse.ui.externaltools.ExternalToolBuilder') + } +} + +if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { + sourceSets { + test { + java { + exclude '**/core/boot/tests/**' + } + } + } +} diff --git a/fineract-security/dependencies.gradle b/fineract-security/dependencies.gradle new file mode 100644 index 000000000..43d12d9c9 --- /dev/null +++ b/fineract-security/dependencies.gradle @@ -0,0 +1,98 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +dependencies { + // Never use "compile" scope, but make all dependencies either 'implementation', 'runtimeOnly' or 'testCompile'. + // Note that we never use 'api', because Fineract at least currently is a simple monolithic application ("WAR"), not a library. + // We also (normally should have) no need to ever use 'compileOnly'. + + // Core module dependency + implementation(project(path: ':fineract-core')) + + // PostgreSQL driver for SQL injection prevention utilities + implementation 'org.postgresql:postgresql' + + // Spring Boot Security dependencies + implementation( + 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-security', + 'org.springframework.boot:spring-boot-starter-oauth2-authorization-server', + 'org.springframework.boot:spring-boot-starter-oauth2-resource-server', + 'org.springframework.boot:spring-boot-starter-oauth2-client', + 'org.springframework.boot:spring-boot-starter-cache', + + 'jakarta.ws.rs:jakarta.ws.rs-api', + 'org.glassfish.jersey.media:jersey-media-multipart', + + 'com.google.guava:guava', + 'com.google.code.gson:gson', + + 'org.apache.commons:commons-lang3', + + 'com.jayway.jsonpath:json-path', + + 'com.github.spotbugs:spotbugs-annotations', + 'io.swagger.core.v3:swagger-annotations-jakarta', + + 'org.springdoc:springdoc-openapi-starter-webmvc-ui', + 'org.mapstruct:mapstruct', + ) + + // JPA for security entities + implementation ('org.springframework.boot:spring-boot-starter-data-jpa') { + exclude group: 'org.hibernate' + } + implementation('org.eclipse.persistence:org.eclipse.persistence.jpa') { + exclude group: 'org.eclipse.persistence', module: 'jakarta.persistence' + } + + // OWASP ESAPI for security utilities + implementation('org.owasp.esapi:esapi') { + exclude group: 'org.slf4j' + exclude group: 'log4j' + exclude group: 'commons-logging' + exclude group: 'commons-collections' + exclude group: 'commons-lang' + exclude group: 'spotbugs-annotations' + exclude group: 'xml-apis' + } + + // Email support for OTP delivery + implementation ('org.apache.commons:commons-email') { + exclude group: 'com.sun.mail', module: 'javax.mail' + exclude group: 'javax.activation', module: 'activation' + } + implementation 'com.sun.mail:jakarta.mail' + + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + annotationProcessor 'org.mapstruct:mapstruct-processor' + + // Test dependencies + testImplementation( 'io.github.classgraph:classgraph' ) + testImplementation ('org.springframework.boot:spring-boot-starter-test') { + exclude group: 'com.jayway.jsonpath', module: 'json-path' + exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' + exclude group: 'jakarta.activation' + exclude group: 'javax.activation' + exclude group: 'org.skyscreamer' + } + testImplementation ('org.mockito:mockito-inline') + testImplementation 'org.springframework.security:spring-security-test' +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResource.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResource.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResource.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResource.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResourceSwagger.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResourceSwagger.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResourceSwagger.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResourceSwagger.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/LoginController.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/LoginController.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/LoginController.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/LoginController.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorApiResource.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorApiResource.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorApiResource.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorApiResource.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorConfigurationApiResource.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorConfigurationApiResource.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorConfigurationApiResource.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorConfigurationApiResource.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResourceSwagger.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResourceSwagger.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResourceSwagger.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResourceSwagger.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/command/InvalidateTFAccessTokenCommandHandler.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/command/InvalidateTFAccessTokenCommandHandler.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/command/InvalidateTFAccessTokenCommandHandler.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/command/InvalidateTFAccessTokenCommandHandler.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/command/UpdateTwoFactorConfigCommandHandler.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/command/UpdateTwoFactorConfigCommandHandler.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/command/UpdateTwoFactorConfigCommandHandler.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/command/UpdateTwoFactorConfigCommandHandler.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TenantConstants.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TenantConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TenantConstants.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TenantConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConfigurationConstants.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConfigurationConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConfigurationConstants.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConfigurationConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AccessTokenData.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AccessTokenData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AccessTokenData.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AccessTokenData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedOauthUserData.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedOauthUserData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedOauthUserData.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedOauthUserData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedUserData.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedUserData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedUserData.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedUserData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPDeliveryMethod.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPDeliveryMethod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPDeliveryMethod.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPDeliveryMethod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPMetadata.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPMetadata.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPMetadata.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPMetadata.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPRequest.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPRequest.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPRequest.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPRequest.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/TenantAuthenticationDetails.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TenantAuthenticationDetails.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/TenantAuthenticationDetails.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TenantAuthenticationDetails.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/OTPRequestRepository.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/OTPRequestRepository.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/OTPRequestRepository.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/OTPRequestRepository.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/PlatformUserRepository.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/PlatformUserRepository.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/PlatformUserRepository.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/PlatformUserRepository.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessTokenRepository.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessTokenRepository.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessTokenRepository.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessTokenRepository.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfigurationRepository.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfigurationRepository.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfigurationRepository.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfigurationRepository.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/AccessTokenInvalidIException.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/AccessTokenInvalidIException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/AccessTokenInvalidIException.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/AccessTokenInvalidIException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/EscapeSqlLiteralException.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/EscapeSqlLiteralException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/EscapeSqlLiteralException.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/EscapeSqlLiteralException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPDeliveryMethodInvalidException.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPDeliveryMethodInvalidException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPDeliveryMethodInvalidException.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPDeliveryMethodInvalidException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPTokenInvalidException.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPTokenInvalidException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPTokenInvalidException.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPTokenInvalidException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ResetPasswordException.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/ResetPasswordException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ResetPasswordException.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/ResetPasswordException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java diff --git a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/package-info.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/package-info.java new file mode 100644 index 000000000..305e3cc3b --- /dev/null +++ b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/package-info.java @@ -0,0 +1,36 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Fineract Security Module. + * + * This module contains all security-related components for Apache Fineract including: + * + * + * @see org.apache.fineract.infrastructure.security.api + * @see org.apache.fineract.infrastructure.security.config + * @see org.apache.fineract.infrastructure.security.service + */ +package org.apache.fineract.infrastructure.security; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AccessTokenGenerationService.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AccessTokenGenerationService.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AccessTokenGenerationService.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AccessTokenGenerationService.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsService.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsService.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsService.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsService.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/RandomOTPGenerator.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/RandomOTPGenerator.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/RandomOTPGenerator.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/RandomOTPGenerator.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SqlInjectionPreventerServiceImpl.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/SqlInjectionPreventerServiceImpl.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SqlInjectionPreventerServiceImpl.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/SqlInjectionPreventerServiceImpl.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TenantAwareJpaPlatformUserDetailsService.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TenantAwareJpaPlatformUserDetailsService.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TenantAwareJpaPlatformUserDetailsService.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TenantAwareJpaPlatformUserDetailsService.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationService.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationService.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationService.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationService.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorService.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorService.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorService.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorService.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/UUIDAccessTokenGenerationService.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/UUIDAccessTokenGenerationService.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/UUIDAccessTokenGenerationService.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/UUIDAccessTokenGenerationService.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAuthorizationManager.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAuthorizationManager.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAuthorizationManager.java rename to fineract-security/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAuthorizationManager.java diff --git a/oauth2-tests/dependencies.gradle b/oauth2-tests/dependencies.gradle index 448003e0b..2b94eb21a 100644 --- a/oauth2-tests/dependencies.gradle +++ b/oauth2-tests/dependencies.gradle @@ -23,6 +23,7 @@ dependencies { tomcat 'org.apache.tomcat:tomcat:10.1.47@zip' testImplementation( files("$rootDir/fineract-provider/build/classes/java/main/"), project(path: ':fineract-provider', configuration: 'runtimeElements'), + project(path: ':fineract-security', configuration: 'runtimeElements'), 'org.junit.jupiter:junit-jupiter-api', 'org.bouncycastle:bcpkix-jdk18on', 'org.bouncycastle:bcprov-jdk18on', diff --git a/settings.gradle b/settings.gradle index 1b6ac8d97..892be9e67 100644 --- a/settings.gradle +++ b/settings.gradle @@ -48,6 +48,7 @@ buildCache { rootProject.name='fineract' include ':fineract-core' +include ':fineract-security' include ':fineract-cob' include ':fineract-validation' include ':fineract-command'