Skip to content

Commit 433d298

Browse files
germanosingit-halinka
authored andcommitted
BE: Auth: impl opaque token auth (kafbat#948)
1 parent 64beec8 commit 433d298

File tree

4 files changed

+19
-0
lines changed

4 files changed

+19
-0
lines changed

api/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ dependencies {
1818
implementation libs.spring.starter.actuator
1919
implementation libs.spring.starter.logging
2020
implementation libs.spring.starter.oauth2.client
21+
implementation libs.spring.security.oauth2.resource.server
2122
implementation libs.spring.boot.actuator
2223
compileOnly libs.spring.boot.devtools
2324

api/src/main/java/io/kafbat/ui/config/auth/OAuthProperties.java

+2
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66
import java.util.Map;
77
import java.util.Set;
88
import lombok.Data;
9+
import org.springframework.boot.autoconfigure.security.oauth2.resource.OAuth2ResourceServerProperties;
910
import org.springframework.boot.context.properties.ConfigurationProperties;
1011
import org.springframework.util.Assert;
1112

1213
@ConfigurationProperties("auth.oauth2")
1314
@Data
1415
public class OAuthProperties {
1516
private Map<String, OAuth2Provider> client = new HashMap<>();
17+
private OAuth2ResourceServerProperties resourceServer = null;
1618

1719
@PostConstruct
1820
public void init() {

api/src/main/java/io/kafbat/ui/config/auth/OAuthSecurityConfig.java

+15
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
1515
import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties;
1616
import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesMapper;
17+
import org.springframework.boot.autoconfigure.security.oauth2.resource.OAuth2ResourceServerProperties;
1718
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1819
import org.springframework.context.annotation.Bean;
1920
import org.springframework.context.annotation.Configuration;
@@ -62,6 +63,20 @@ public SecurityWebFilterChain configure(ServerHttpSecurity http, OAuthLogoutSucc
6263
.logout(spec -> spec.logoutSuccessHandler(logoutHandler))
6364
.csrf(ServerHttpSecurity.CsrfSpec::disable);
6465

66+
if (properties.getResourceServer() != null) {
67+
OAuth2ResourceServerProperties resourceServer = properties.getResourceServer();
68+
if (resourceServer.getJwt() != null) {
69+
builder.oauth2ResourceServer((c) -> c.jwt((j) -> j.jwkSetUri(resourceServer.getJwt().getJwkSetUri())));
70+
} else if (resourceServer.getOpaquetoken() != null) {
71+
OAuth2ResourceServerProperties.Opaquetoken opaquetoken = resourceServer.getOpaquetoken();
72+
builder.oauth2ResourceServer(
73+
(c) -> c.opaqueToken(
74+
(o) -> o.introspectionUri(opaquetoken.getIntrospectionUri())
75+
.introspectionClientCredentials(opaquetoken.getClientId(), opaquetoken.getClientSecret())
76+
)
77+
);
78+
}
79+
}
6580

6681
builder.addFilterAt(new StaticFileWebFilter(), SecurityWebFiltersOrder.LOGIN_PAGE_GENERATING);
6782

gradle/libs.versions.toml

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ spring-boot-devtools = { module = 'org.springframework.boot:spring-boot-devtools
6666
spring-boot-configuration-processor = { module = 'org.springframework.boot:spring-boot-configuration-processor', version.ref = 'spring-boot' }
6767

6868
spring-security-ldap = { module = 'org.springframework.security:spring-security-ldap' }
69+
spring-security-oauth2-resource-server = { module = 'org.springframework.security:spring-security-oauth2-resource-server'}
6970

7071
swagger-integration-jakarta = { module = 'io.swagger.core.v3:swagger-integration-jakarta', version.ref = 'swagger-integration-jakarta' }
7172
lombok = { module = 'org.projectlombok:lombok', version.ref = 'lombok' }

0 commit comments

Comments
 (0)