Skip to content

Commit edd6c33

Browse files
committed
Replicated Keycloak upgrade to version 11.0.2, adapted classes and configurations (for oauth-rest/oauth-authorization-server)
1 parent 503c2f0 commit edd6c33

File tree

4 files changed

+160
-25
lines changed

4 files changed

+160
-25
lines changed

oauth-rest/oauth-authorization-server/pom.xml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@
5555
<artifactId>keycloak-dependencies-server-all</artifactId>
5656
<version>${keycloak.version}</version>
5757
<type>pom</type>
58+
<exclusions>
59+
<exclusion>
60+
<groupId>org.slf4j</groupId>
61+
<artifactId>slf4j-log4j12</artifactId>
62+
</exclusion>
63+
<exclusion>
64+
<groupId>log4j</groupId>
65+
<artifactId>log4j</artifactId>
66+
</exclusion>
67+
</exclusions>
5868
</dependency>
5969

6070
<!-- config properties processor -->
@@ -107,8 +117,12 @@
107117
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
108118
<java.version>13</java.version>
109119

110-
<keycloak.version>10.0.1</keycloak.version>
111-
<resteasy.version>3.11.2.Final</resteasy.version>
120+
<keycloak.version>11.0.2</keycloak.version>
121+
122+
<!-- these should be updated together with Keycloak -->
123+
<!-- check keycloak-dependencies-server-all effective pom -->
124+
<infinispan.version>10.1.8.Final</infinispan.version>
125+
<resteasy.version>3.12.1.Final</resteasy.version>
112126
</properties>
113127

114128
</project>

oauth-rest/oauth-authorization-server/src/main/java/com/baeldung/auth/config/EmbeddedKeycloakConfig.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
import org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher;
1212
import org.jboss.resteasy.plugins.server.servlet.ResteasyContextParameters;
13-
import org.keycloak.services.filters.KeycloakSessionServletFilter;
1413
import org.springframework.boot.web.servlet.FilterRegistrationBean;
1514
import org.springframework.boot.web.servlet.ServletRegistrationBean;
1615
import org.springframework.context.annotation.Bean;
@@ -40,15 +39,14 @@ ServletRegistrationBean<HttpServlet30Dispatcher> keycloakJaxRsApplication(
4039
}
4140

4241
@Bean
43-
FilterRegistrationBean<KeycloakSessionServletFilter> keycloakSessionManagement(
44-
KeycloakServerProperties keycloakServerProperties) {
42+
FilterRegistrationBean<EmbeddedKeycloakRequestFilter> keycloakSessionManagement(KeycloakServerProperties keycloakServerProperties) {
4543

46-
FilterRegistrationBean<KeycloakSessionServletFilter> filter = new FilterRegistrationBean<>();
47-
filter.setName("Keycloak Session Management");
48-
filter.setFilter(new KeycloakSessionServletFilter());
49-
filter.addUrlPatterns(keycloakServerProperties.getContextPath() + "/*");
44+
FilterRegistrationBean<EmbeddedKeycloakRequestFilter> filter = new FilterRegistrationBean<>();
45+
filter.setName("Keycloak Session Management");
46+
filter.setFilter(new EmbeddedKeycloakRequestFilter());
47+
filter.addUrlPatterns(keycloakServerProperties.getContextPath() + "/*");
5048

51-
return filter;
49+
return filter;
5250
}
5351

5452
private void mockJndiEnvironment(DataSource dataSource) throws NamingException {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.baeldung.auth.config;
2+
3+
import java.io.UnsupportedEncodingException;
4+
5+
import javax.servlet.Filter;
6+
import javax.servlet.FilterChain;
7+
import javax.servlet.ServletRequest;
8+
import javax.servlet.ServletResponse;
9+
import javax.servlet.http.HttpServletRequest;
10+
11+
import org.keycloak.common.ClientConnection;
12+
import org.keycloak.services.filters.AbstractRequestFilter;
13+
14+
public class EmbeddedKeycloakRequestFilter extends AbstractRequestFilter implements Filter {
15+
16+
@Override
17+
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws UnsupportedEncodingException {
18+
servletRequest.setCharacterEncoding("UTF-8");
19+
ClientConnection clientConnection = createConnection((HttpServletRequest) servletRequest);
20+
21+
filter(clientConnection, (session) -> {
22+
try {
23+
filterChain.doFilter(servletRequest, servletResponse);
24+
} catch (Exception e) {
25+
throw new RuntimeException(e);
26+
}
27+
});
28+
}
29+
30+
private ClientConnection createConnection(HttpServletRequest request) {
31+
return new ClientConnection() {
32+
@Override
33+
public String getRemoteAddr() {
34+
return request.getRemoteAddr();
35+
}
36+
37+
@Override
38+
public String getRemoteHost() {
39+
return request.getRemoteHost();
40+
}
41+
42+
@Override
43+
public int getRemotePort() {
44+
return request.getRemotePort();
45+
}
46+
47+
@Override
48+
public String getLocalAddr() {
49+
return request.getLocalAddr();
50+
}
51+
52+
@Override
53+
public int getLocalPort() {
54+
return request.getLocalPort();
55+
}
56+
};
57+
}
58+
}
Lines changed: 80 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
{
22
"hostname": {
3-
"provider": "request",
3+
"provider": "${keycloak.hostname.provider:default}",
44
"fixed": {
5-
"hostname": "${keycloak.override.hostname:localhost}",
6-
"httpPort": "${keycloak.override.httpPort:-1}",
7-
"httpsPort": "${keycloak.override.httpsPort:-1}"
5+
"hostname": "${keycloak.hostname.fixed.hostname:localhost}",
6+
"httpPort": "${keycloak.hostname.fixed.httpPort:-1}",
7+
"httpsPort": "${keycloak.hostname.fixed.httpsPort:-1}",
8+
"alwaysHttps": "${keycloak.hostname.fixed.alwaysHttps:false}"
9+
},
10+
"default": {
11+
"frontendUrl": "${keycloak.frontendUrl:}",
12+
"adminUrl": "${keycloak.adminUrl:}",
13+
"forceBackendUrlToFrontendUrl": "${keycloak.hostname.default.forceBackendUrlToFrontendUrl:false}"
814
}
915
},
1016
"admin": {
@@ -13,15 +19,15 @@
1319
"eventsStore": {
1420
"provider": "${keycloak.eventsStore.provider:jpa}",
1521
"jpa": {
16-
"exclude-events": [
17-
"REFRESH_TOKEN"
18-
]
22+
"max-detail-length": "${keycloak.eventsStore.maxDetailLength:1000}"
1923
}
2024
},
2125
"eventsListener": {
2226
"jboss-logging": {
2327
"success-level": "debug",
2428
"error-level": "warn"
29+
},
30+
"event-queue": {
2531
}
2632
},
2733
"realm": {
@@ -30,6 +36,15 @@
3036
"user": {
3137
"provider": "${keycloak.user.provider:jpa}"
3238
},
39+
"client": {
40+
"provider": "${keycloak.client.provider:jpa}"
41+
},
42+
"mapStorage": {
43+
"provider": "${keycloak.mapStorage.provider:concurrenthashmap}",
44+
"concurrenthashmap": {
45+
"dir": "${project.build.directory:target}"
46+
}
47+
},
3348
"userFederatedStorage": {
3449
"provider": "${keycloak.userFederatedStorage.provider:jpa}"
3550
},
@@ -40,10 +55,17 @@
4055
"provider": "${keycloak.authorization.provider:jpa}"
4156
},
4257
"userCache": {
58+
"provider": "${keycloak.user.cache.provider:default}",
4359
"default": {
4460
"enabled": true
61+
},
62+
"mem": {
63+
"maxSize": 20000
4564
}
4665
},
66+
"userSessions": {
67+
"provider": "${keycloak.userSessions.provider:infinispan}"
68+
},
4769
"timer": {
4870
"provider": "basic"
4971
},
@@ -55,19 +77,26 @@
5577
"dir": "${keycloak.theme.dir}"
5678
}
5779
},
80+
"login": {
81+
"provider": "freemarker"
82+
},
83+
"account": {
84+
"provider": "freemarker"
85+
},
86+
"email": {
87+
"provider": "freemarker"
88+
},
5889
"scheduled": {
5990
"interval": 900
6091
},
6192
"connectionsHttpClient": {
6293
"default": {
63-
94+
"max-connection-idle-time-millis": 1000
6495
}
6596
},
6697
"connectionsJpa": {
67-
"provider": "default",
6898
"default": {
69-
"dataSource": "spring/datasource",
70-
"url": "${env.KEYCLOAK_DATABASE_URL:jdbc:h2:./target/keycloak}",
99+
"url": "${keycloak.connectionsJpa.url:jdbc:h2:./target/keycloak}",
71100
"driver": "${keycloak.connectionsJpa.driver:org.h2.Driver}",
72101
"driverDialect": "${keycloak.connectionsJpa.driverDialect:}",
73102
"user": "${keycloak.connectionsJpa.user:sa}",
@@ -80,22 +109,58 @@
80109
}
81110
},
82111
"realmCache": {
112+
"provider": "${keycloak.realm.cache.provider:default}",
83113
"default": {
84114
"enabled": true
85115
}
86116
},
87117
"connectionsInfinispan": {
88118
"default": {
89-
"embedded": "true"
119+
"embedded": "${keycloak.connectionsInfinispan.embedded:true}"
90120
}
91-
},
92-
"scripting": {
93-
94121
},
95122
"jta-lookup": {
96123
"provider": "${keycloak.jta.lookup.provider:jboss}",
97124
"jboss": {
98125
"enabled": true
99126
}
127+
},
128+
"login-protocol": {
129+
"saml": {
130+
"knownProtocols": [
131+
"http=${auth.server.http.port}",
132+
"https=${auth.server.https.port}"
133+
]
134+
}
135+
},
136+
"x509cert-lookup": {
137+
"provider": "${keycloak.x509cert.lookup.provider:default}",
138+
"default": {
139+
"enabled": true
140+
},
141+
"haproxy": {
142+
"enabled": true,
143+
"sslClientCert": "x-ssl-client-cert",
144+
"sslCertChainPrefix": "x-ssl-client-cert-chain",
145+
"certificateChainLength": 1
146+
},
147+
"apache": {
148+
"enabled": true,
149+
"sslClientCert": "x-ssl-client-cert",
150+
"sslCertChainPrefix": "x-ssl-client-cert-chain",
151+
"certificateChainLength": 1
152+
},
153+
"nginx": {
154+
"enabled": true,
155+
"sslClientCert": "x-ssl-client-cert",
156+
"sslCertChainPrefix": "x-ssl-client-cert-chain",
157+
"certificateChainLength": 1
158+
}
159+
},
160+
"vault": {
161+
"files-plaintext": {
162+
"dir": "target/dependency/vault",
163+
"enabled": "${keycloak.vault.files-plaintext.provider.enabled:false}"
164+
}
100165
}
101166
}

0 commit comments

Comments
 (0)