Java/Spring Boot - JHipster

Add dependency for DataDome Java Module

When using Maven, update your pom.xml file with the following content:

<project>
...
    <dependencies>
    ...
        <dependency>
          <groupId>co.datadome.module</groupId>
         <artifactId>datadome-java-module</artifactId>
          <version>1.14</version>
        </dependency>
    ...
    </dependencies>
...
</project>

Register the DataDomeFilter

Add a FilterRegistrationBean in your java web configuration file. It has to be registered with the highest priority order.
For JHipster, you may use WebConfigurer.java.

public class WebConfigurer implements ServletContextInitializer, WebServerFactoryCustomizer<WebServerFactory> {
    
        /* section to copy */
    @Bean
    public FilterRegistrationBean<DataDomeFilter> dataDomeFilter() {
        FilterRegistrationBean<DataDomeFilter> filterRegistrationBean = new FilterRegistrationBean<>();

        filterRegistrationBean.setFilter(new DataDomeFilter());

        filterRegistrationBean.setName("datadome-filter");

        filterRegistrationBean.addUrlPatterns("/*");

        Map<String, String> iniParameters = Stream.of(new String[][]{
            {"datadome.apikey", "YOUR_SECRET_LICENSE_KEY"},
            {"datadome.hostname", "YOUR_CLOSEST_API_DATADOME_SERVER},
        }).collect(Collectors.toMap(data -> data[0], data -> data[1]));
        filterRegistrationBean.setInitParameters(iniParameters);

        filterRegistrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
        return filterRegistrationBean;
    }
        /* end of section*/
}

List of possible init parameters to add in the iniParameters map:

Settings

Description

Default

datadome.apikey

License key to access API

datadome.hostname

API server's hostname
Available endpoints

api.datadome.co

datadome.ssl

Use SSL between the filter and the API server

true

datadome.regex

Inclusion Regex

""

datadome.exclusion_regex

Exclusion Regex

\.(js|css|jpg|jpeg|png|ico|gif|tiff|svg|woff|woff2|ttf|eot|mp4|otf)$

datadome.connection_timeout

Connection timeout (in ms)

150

datadome.read_timeout

Read timeout (in ms)

50

datadome.max_connections

Maximum open connections to the API server

100

datadome.proxy_server

Host that will be used as proxy server
See here

datadome.proxy_port

TCP port at the proxy server
See here

datadome.proxy_ssl

Is the connection to the proxy established through TLS
See here

false

datadome.skip_ips

IPv4 or IPv6 subnetwork list on which DataDome validation is not executed, e.g.: "2a03:2880:1000::/36,124.66.0.0/17"

FAQ

Can the DataDome API be called via outbound proxy?

The DataDome module can be used with outbound proxy. Two options are available for the proxy configuration:

  • Use system settings such as -Dhttp.proxyHost=1.2.3.4 -Dhttp.proxyPort=8080 -Dhttps.proxyHost=1.2.3.4 -Dhttps.proxyPort=8443 when running your java application

  • Use optional DataDome init parameters datadome.proxy_server, datadome.proxy_port, datadome.proxy_ssl in web.xml

Note: Using the DataDome module with outbound proxy can slower total time spent calling the DataDome API and increase timeouts. Please adjust timeout settings accordingly.