DataWave Spring Boot Starter for Microservices
This is a Spring Boot "starter" class to build a DATAWAVE microservice. This starter provides custom default behavior that is useful for new services.
Authentication/Security
- Enables JSR-250 method annotations for spring security.
- Provides a Spring Security configuration that authenticates based on
the presence of a JSON Web Token (JWT) in the Authorization request header.
The JWT payload should be an encoded list of
DatawaveUser
objects. - If the
remoteauth
profile is active, then this provides a Spring Security configuration that uses the provided PKI information to authenticate to a remote authorization service, provided no JWT was supplied instead. - Spring Security pre-authentication for a proxied entity, where the primary
caller can be trusted to delegate for a chain of users. This supports
placing the delegate credential (subject/issuer DNs) in trusted headers
X-ProxiedEntitiesChain
andX-ProxiedIssuersChain
.
Web Customization
- RestClient customization to specify number of threads used overall and per-route for Spring RestClient.
- Customization of both RestClient and WebClient to provide client certificates
based on the property
server.outbound-ssl.enabled
. - Undertow customization to support collection of request timing
- Use Jackson for JSON conversions, but pay attention to JAX-B bindings.
- Adorn responses with headers indicating system name, request time, etc.
- CORS configuration
Other Miscellany
RabbitMQ Discovery
Provides Spring Cloud discovery of the RabbitMQ instance backing the Spring Cloud Event bus.
Accumulo
Provides Accumulo configuration to access both the warehouse and metrics Accumulo clusters.
Markings
Provides default markings configuration including MarkingFunctions
and
a caffeine cache manager to storing cached markings.
Metrics
Provides DropWizard metrics configuration/reporting via the
metrics.reporter
prefix. See MetricsConfigurationProperties.
HTML Responses
Provides message converters for returning a formatted HTML page.
Protostuff Responses
Reads/writes Google protobuf entities/responses using the protostuff library for messages implementing the protostuff Message interface.
REST Exceptions
RestExceptionHandler
returns a datawave VoidResponse
upon receipt of an exception.
Validators
NotBlankIfFieldEquals validates that a field must not be blank if another field matches a specified value. RequiredValueIfFieldEquals validates that a field is set to a specified value if another field matches a specified value.
Events
AuthorizationEvictionEvent is an event that is published to the event bus when user credential data is evicted from the authorization service's cache. Other services may want to respond to this event to refresh a display or force the user to re-authenticate.
PKI
A test certificate authority and user/server certificates for use in tests and/or demo applications. See the resources directory.
CSS
A default screen.css
file is provided
for displaying tables in web apps.
Banner
A default datawave banner for display by Spring at application startup.