Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
08a9ac3584
|
||
|
|
64faaa3c4a
|
||
|
|
32581e9cc8
|
||
|
|
93016dabfa
|
||
|
|
6fb144ef43
|
@@ -0,0 +1,28 @@
|
|||||||
|
name: Build image
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Set up Docker
|
||||||
|
uses: docker/setup-docker-action@v4
|
||||||
|
- name: Setup Java
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: 17
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: gradle/actions/setup-gradle@v4
|
||||||
|
- name: Build and push container
|
||||||
|
run: ./gradlew -Prelease.useLastTag=true final jib
|
||||||
|
env:
|
||||||
|
USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
@@ -9,6 +9,4 @@ dependencies {
|
|||||||
implementation(libs.bundles.spring.boot.security)
|
implementation(libs.bundles.spring.boot.security)
|
||||||
annotationProcessor(libs.mapstruct.processor)
|
annotationProcessor(libs.mapstruct.processor)
|
||||||
kapt(libs.mapstruct.processor)
|
kapt(libs.mapstruct.processor)
|
||||||
implementation(libs.spring.cloud.starter.config)
|
|
||||||
implementation(libs.spring.cloud.starter.bus.kafka)
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -15,9 +15,9 @@ import org.springframework.context.annotation.Configuration
|
|||||||
name = "oauth2",
|
name = "oauth2",
|
||||||
type = SecuritySchemeType.OAUTH2,
|
type = SecuritySchemeType.OAUTH2,
|
||||||
flows = OAuthFlows(
|
flows = OAuthFlows(
|
||||||
implicit = OAuthFlow(
|
authorizationCode = OAuthFlow(
|
||||||
authorizationUrl = "https://id.2martens.de/realms/2martens/protocol/openid-connect/auth",
|
authorizationUrl = "https://id.2martens.de/realms/twomartens/protocol/openid-connect/auth",
|
||||||
tokenUrl = "https://id.2martens.de/realms/2martens/protocol/openid-connect/token"
|
tokenUrl = "https://id.2martens.de/realms/twomartens/protocol/openid-connect/token"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
-5
@@ -11,13 +11,10 @@ import org.springframework.beans.factory.annotation.Value
|
|||||||
import org.springframework.context.annotation.Bean
|
import org.springframework.context.annotation.Bean
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
import org.springframework.http.HttpMethod
|
import org.springframework.http.HttpMethod
|
||||||
import org.springframework.security.config.Customizer
|
|
||||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
||||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
|
||||||
import org.springframework.security.config.annotation.web.configurers.oauth2.server.resource.OAuth2ResourceServerConfigurer
|
|
||||||
import org.springframework.security.oauth2.jwt.JwtDecoder
|
import org.springframework.security.oauth2.jwt.JwtDecoder
|
||||||
import org.springframework.security.oauth2.jwt.NimbusJwtDecoder
|
import org.springframework.security.oauth2.jwt.NimbusJwtDecoder
|
||||||
import org.springframework.security.oauth2.server.resource.web.authentication.BearerTokenAuthenticationFilter
|
|
||||||
import org.springframework.security.web.SecurityFilterChain
|
import org.springframework.security.web.SecurityFilterChain
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
@@ -38,8 +35,6 @@ open class WebSecurityConfiguration {
|
|||||||
.authorizeHttpRequests { it.requestMatchers(*PERMITTED_PATHS.toTypedArray<String>()).permitAll() }
|
.authorizeHttpRequests { it.requestMatchers(*PERMITTED_PATHS.toTypedArray<String>()).permitAll() }
|
||||||
.authorizeHttpRequests { it.requestMatchers(HttpMethod.OPTIONS).permitAll() }
|
.authorizeHttpRequests { it.requestMatchers(HttpMethod.OPTIONS).permitAll() }
|
||||||
.authorizeHttpRequests { it.anyRequest().authenticated() }
|
.authorizeHttpRequests { it.anyRequest().authenticated() }
|
||||||
.oauth2ResourceServer { obj: OAuth2ResourceServerConfigurer<HttpSecurity?> -> obj.jwt(Customizer.withDefaults()) }
|
|
||||||
.addFilterAfter(createPolicyEnforcerFilter(), BearerTokenAuthenticationFilter::class.java)
|
|
||||||
return http.build()
|
return http.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,13 +2,12 @@ package de.twomartens.wahlrecht.property
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema
|
import io.swagger.v3.oas.annotations.media.Schema
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
import org.springframework.cloud.context.config.annotation.RefreshScope
|
import org.springframework.boot.context.properties.bind.ConstructorBinding
|
||||||
import java.time.ZoneId
|
import java.time.ZoneId
|
||||||
|
|
||||||
@RefreshScope
|
|
||||||
@ConfigurationProperties(prefix = "de.twomartens.wahlrecht")
|
@ConfigurationProperties(prefix = "de.twomartens.wahlrecht")
|
||||||
@Schema(description = "Properties, to configure this Application")
|
@Schema(description = "Properties, to configure this Application")
|
||||||
open class ServiceProperties {
|
data class ServiceProperties @ConstructorBinding constructor(
|
||||||
lateinit var defaultTimeZone: ZoneId
|
val defaultTimeZone: ZoneId,
|
||||||
lateinit var greeting: String
|
val greeting: String
|
||||||
}
|
)
|
||||||
-2
@@ -4,11 +4,9 @@ import io.swagger.v3.oas.annotations.media.Schema
|
|||||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
import org.springframework.boot.context.properties.bind.ConstructorBinding
|
import org.springframework.boot.context.properties.bind.ConstructorBinding
|
||||||
import org.springframework.boot.convert.DurationUnit
|
import org.springframework.boot.convert.DurationUnit
|
||||||
import org.springframework.cloud.context.config.annotation.RefreshScope
|
|
||||||
import java.time.Duration
|
import java.time.Duration
|
||||||
import java.time.temporal.ChronoUnit
|
import java.time.temporal.ChronoUnit
|
||||||
|
|
||||||
@RefreshScope
|
|
||||||
@ConfigurationProperties(prefix = "de.twomartens.wahlrecht.statusprobe")
|
@ConfigurationProperties(prefix = "de.twomartens.wahlrecht.statusprobe")
|
||||||
@Schema(description = "Properties, to configure this Application")
|
@Schema(description = "Properties, to configure this Application")
|
||||||
data class StatusProbeProperties @ConstructorBinding constructor(
|
data class StatusProbeProperties @ConstructorBinding constructor(
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
spring:
|
|
||||||
config:
|
|
||||||
import:
|
|
||||||
- "classpath:config/wahlrecht.yaml"
|
|
||||||
- "optional:configserver:${CONFIGSERVER_SCHEME:http}://${CONFIGSERVER_HOST:configserver}:${CONFIGSERVER_PORT:8888}${CONFIGSERVER_PREFIX:/config}"
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
spring:
|
|
||||||
config:
|
|
||||||
import:
|
|
||||||
- "configserver:${CONFIGSERVER_SCHEME:http}://${CONFIGSERVER_HOST:configserver}:${CONFIGSERVER_PORT:8888}${CONFIGSERVER_PREFIX:/config}"
|
|
||||||
kafka:
|
|
||||||
bootstrap-servers:
|
|
||||||
- "${KAFKA_HOST:kafka}:${KAFKA_PORT:9092}"
|
|
||||||
@@ -24,9 +24,6 @@ management:
|
|||||||
http.server.requests: true
|
http.server.requests: true
|
||||||
|
|
||||||
spring:
|
spring:
|
||||||
cloud:
|
|
||||||
config:
|
|
||||||
name: wahlrecht
|
|
||||||
main:
|
main:
|
||||||
banner-mode: off
|
banner-mode: off
|
||||||
profiles:
|
profiles:
|
||||||
@@ -87,3 +84,12 @@ resttemplate:
|
|||||||
connectionRestHealthIndicatorTimeoutInMillis: 5000
|
connectionRestHealthIndicatorTimeoutInMillis: 5000
|
||||||
readTimeoutRestTemplateInMillis: 5000
|
readTimeoutRestTemplateInMillis: 5000
|
||||||
connectionRestTemplateTimeoutInMillis: 5000
|
connectionRestTemplateTimeoutInMillis: 5000
|
||||||
|
|
||||||
|
de.twomartens.wahlrecht:
|
||||||
|
defaultTimeZone: Europe/Berlin
|
||||||
|
greeting: "Hello %s, on millenium"
|
||||||
|
statusprobe:
|
||||||
|
scheduleDuration: 60
|
||||||
|
maxKafkaFailureDuration: 5
|
||||||
|
maxBlobFailureCount: 5
|
||||||
|
maxFailurePercent: 50
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
de.twomartens.wahlrecht:
|
|
||||||
greeting: "Moin %s, you are test"
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
de.twomartens.wahlrecht:
|
|
||||||
defaultTimeZone: Europe/Berlin
|
|
||||||
greeting: "Hello %s, on millenium"
|
|
||||||
statusprobe:
|
|
||||||
scheduleDuration: 60
|
|
||||||
maxKafkaFailureDuration: 5
|
|
||||||
maxBlobFailureCount: 5
|
|
||||||
maxFailurePercent: 50
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"realm": "2martens",
|
"realm": "twomartens",
|
||||||
"auth-server-url": "https://id.2martens.de",
|
"auth-server-url": "https://id.2martens.de",
|
||||||
"resource": "wahlrecht",
|
"resource": "wahlrecht",
|
||||||
"http-method-as-scope": true
|
"http-method-as-scope": true
|
||||||
|
|||||||
Reference in New Issue
Block a user