Skip to content

Commit 98f2f41

Browse files
Feature/as 3018 implement security for rest api (#5)
* AS-3018: Remove extra L from the word enrollment. * AS-3018: Fix column update_date. * AS-3018: Call SpringBootServletInitializer's onStartup. * AS-3018: Override DatabaseCheckHealthValidator so that it works with Postgres. * AS-3018: Add AadOAuth2ResourceServerSecurityConfig. * AS-3018: Modify AadOAuth2ResourceServerSecurityConfig. * AS-3018: Disable security for /checkHealth endpoint. * AS-3018: Disable logging for CheckHealthEndpointImpl to avoid exception. * AS-3018: Disable CSRF. * AS-3018: Fix 401 issue. * AS-3018: Fix 401 issue. * AS-3018: Redefine CodeService because of WebADE dependency. * AS-3018: Redefine BaseEndpointsImpl because of WebADE dependency. * AS-3018: Redefine CodeTableEndpointsImpl because of WebADE dependency. * AS-3018: Redefine CodeTableListEndpointsImpl because of WebADE dependency. * AS-3018: Redefine configs. * AS-3018: Fix the issue with "invalid_token".
1 parent ea66de7 commit 98f2f41

27 files changed

+1664
-91
lines changed

.github/workflows/build-package.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ jobs:
5656
export NODE_OPTIONS="--max-old-space-size=4096"
5757
export RELEASE_URL=${{ vars.RELEASE_URL }}
5858
export SNAPSHOT_URL=${{ vars.SNAPSHOT_URL }}
59-
mvn --settings=settings.xml --batch-mode --update-snapshots -f ${{ inputs.MICROSERVICE_NAME }}/pom.xml -Drepo.login=${{ secrets.IDIR_AS_EMAIL }} -Drepo.password=${{ secrets.IDIR_PASSWORD }} -DopenshiftRepo.login=${{ secrets.OPENSHIFT_ACCOUNT }} -DopenshiftRepo.password=${{ secrets.OPENSHIFT_PASSWORD }} deploy
59+
mvn --settings=settings.xml --batch-mode --update-snapshots -f ${{ inputs.MICROSERVICE_NAME }}/pom.xml -Drepo.login=${{ secrets.IDIR_AS_EMAIL }} -Drepo.password=${{ secrets.IDIR_PASSWORD }} -DopenshiftRepo.login=${{ secrets.OPENSHIFT_ACCOUNT }} -DopenshiftRepo.password=${{ secrets.OPENSHIFT_PASSWORD }} -Dtenant.id=${{ secrets.TENANT_ID }} -Dclient.id=${{ secrets.CLIENT_ID }} deploy
6060
6161
- name: Cache local Maven repository
6262
uses: actions/cache@v4

farms-api/deploy-tools/log4j2.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@
1818
</Console>
1919
</Appenders>
2020
<Loggers>
21+
<Logger name="ca.bc.gov.nrs.wfone.common.rest.endpoints" level="WARN" additivity="false">
22+
<AppenderRef ref="file" />
23+
<AppenderRef ref="Console" />
24+
</Logger>
2125
<Root level="${env:LOG_LEVEL}">
22-
<AppenderRef ref="file"/>
26+
<AppenderRef ref="file" />
2327
<AppenderRef ref="Console" />
2428
</Root>
2529
</Loggers>

farms-api/farms-api-rest-endpoints/pom.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,24 @@
4949
<groupId>org.springframework.boot</groupId>
5050
<artifactId>spring-boot-starter-jdbc</artifactId>
5151
</dependency>
52+
<dependency>
53+
<groupId>org.springframework.boot</groupId>
54+
<artifactId>spring-boot-starter</artifactId>
55+
<exclusions>
56+
<exclusion>
57+
<groupId>org.springframework.boot</groupId>
58+
<artifactId>spring-boot-starter-logging</artifactId>
59+
</exclusion>
60+
</exclusions>
61+
</dependency>
62+
<dependency>
63+
<groupId>org.springframework.boot</groupId>
64+
<artifactId>spring-boot-starter-log4j2</artifactId>
65+
</dependency>
66+
<dependency>
67+
<groupId>org.springframework.boot</groupId>
68+
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
69+
</dependency>
5270
<dependency>
5371
<groupId>org.postgresql</groupId>
5472
<artifactId>postgresql</artifactId>

farms-api/farms-api-rest-endpoints/src/main/java/ca/bc/gov/farms/api/ServletInitializer.java

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -10,57 +10,51 @@
1010
import org.slf4j.LoggerFactory;
1111
import org.springframework.boot.builder.SpringApplicationBuilder;
1212
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
13-
import org.springframework.web.context.ContextLoaderListener;
14-
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
15-
1613
import ca.bc.gov.farms.api.rest.v1.jersey.JerseyApplication;
1714
import ca.bc.gov.farms.api.rest.v1.spring.CorsFilter;
18-
import ca.bc.gov.farms.api.rest.v1.spring.EndpointsSpringConfig;
1915
import ca.bc.gov.nrs.wfone.common.rest.endpoints.filters.RequestMetricsFilter;
2016
import ca.bc.gov.nrs.wfone.common.rest.endpoints.filters.VersionForwardingFilter;
2117

2218
public class ServletInitializer extends SpringBootServletInitializer {
2319

24-
private static final Logger logger = LoggerFactory.getLogger(ServletInitializer.class);
25-
private static final String PAR_NAME_CTX_CONFIG_LOCATION = "contextConfigLocation";
20+
private static final Logger logger = LoggerFactory.getLogger(ServletInitializer.class);
21+
private static final String PAR_NAME_CTX_CONFIG_LOCATION = "contextConfigLocation";
2622

27-
@Override
28-
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
29-
return application.sources(FarmApiRestEndpointsApplication.class);
30-
}
23+
@Override
24+
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
25+
return application.sources(FarmApiRestEndpointsApplication.class);
26+
}
3127

32-
@Override
33-
public void onStartup(ServletContext servletContext) throws ServletException {
34-
logger.info("<onStartup");
28+
@Override
29+
public void onStartup(ServletContext servletContext) throws ServletException {
30+
logger.info("<onStartup");
3531

36-
// Disable Jersey Spring Context Loader
37-
servletContext.setInitParameter(PAR_NAME_CTX_CONFIG_LOCATION, "java configuration");
32+
// Disable Jersey Spring Context Loader
33+
servletContext.setInitParameter(PAR_NAME_CTX_CONFIG_LOCATION, "java configuration");
3834

39-
ServletRegistration.Dynamic restServlet = servletContext.addServlet("Rest Servlet", ServletContainer.class);
40-
restServlet.setInitParameter("javax.ws.rs.Application", JerseyApplication.class.getName());
41-
restServlet.setLoadOnStartup(1);
35+
ServletRegistration.Dynamic restServlet = servletContext.addServlet("Rest Servlet", ServletContainer.class);
36+
restServlet.setInitParameter("javax.ws.rs.Application", JerseyApplication.class.getName());
37+
restServlet.setLoadOnStartup(1);
4238

43-
restServlet.addMapping("/*");
39+
restServlet.addMapping("/*");
4440

45-
FilterRegistration.Dynamic requestMetricsFilter = servletContext.addFilter("Request Metrics Filter",
46-
RequestMetricsFilter.class);
47-
requestMetricsFilter.setInitParameter("id_source", "FARMSAPI");
48-
requestMetricsFilter.addMappingForUrlPatterns(null, false, "/*");
41+
FilterRegistration.Dynamic requestMetricsFilter = servletContext.addFilter("Request Metrics Filter",
42+
RequestMetricsFilter.class);
43+
requestMetricsFilter.setInitParameter("id_source", "FARMSAPI");
44+
requestMetricsFilter.addMappingForUrlPatterns(null, false, "/*");
4945

50-
FilterRegistration.Dynamic versionForwardingFilter = servletContext.addFilter("Version Forwarding Filter",
51-
VersionForwardingFilter.class);
52-
versionForwardingFilter.setInitParameter(VersionForwardingFilter.RESPONSE_VERSION_PARAM, "1");
53-
versionForwardingFilter.setInitParameter(VersionForwardingFilter.DEFAULT_REQUEST_VERSION_PARAM, "1");
54-
versionForwardingFilter.addMappingForUrlPatterns(null, false, "/*");
46+
FilterRegistration.Dynamic versionForwardingFilter = servletContext.addFilter("Version Forwarding Filter",
47+
VersionForwardingFilter.class);
48+
versionForwardingFilter.setInitParameter(VersionForwardingFilter.RESPONSE_VERSION_PARAM, "1");
49+
versionForwardingFilter.setInitParameter(VersionForwardingFilter.DEFAULT_REQUEST_VERSION_PARAM, "1");
50+
versionForwardingFilter.addMappingForUrlPatterns(null, false, "/*");
5551

56-
FilterRegistration.Dynamic corsFilter = servletContext.addFilter("CORS Filter", CorsFilter.class);
57-
corsFilter.addMappingForUrlPatterns(null, false, "/*");
52+
FilterRegistration.Dynamic corsFilter = servletContext.addFilter("CORS Filter", CorsFilter.class);
53+
corsFilter.addMappingForUrlPatterns(null, false, "/*");
5854

59-
AnnotationConfigWebApplicationContext rootAppContext = new AnnotationConfigWebApplicationContext();
60-
rootAppContext.register(EndpointsSpringConfig.class);
61-
servletContext.addListener(new ContextLoaderListener(rootAppContext));
55+
super.onStartup(servletContext);
6256

63-
logger.info(">onStartup");
57+
logger.info(">onStartup");
6458

65-
}
59+
}
6660
}

0 commit comments

Comments
 (0)