[keycloak-user] Cache-Control set to private
Dana Danet
Dana.Danet at Evisions.com
Tue Jun 13 20:19:41 EDT 2017
Using a vanilla Spring Boot / Keycloak implementation.
springBootVersion = '1.5.2.RELEASE’
keycloakAdminClient : "org.keycloak:keycloak-admin-client:3.0.0.Final”,
keycloakSpringBootAdapter : "org.keycloak:keycloak-spring-boot-adapter:3.0.0.Final”,
keycloakTomcatAdapter : "org.keycloak:keycloak-tomcat8-adapter:3.0.0.Final",
I’m having difficulty updating the Cache-Control from private to anything else. It appears that this is a Tomcat setting that usually is set via Spring Security. Unfortunately I cannot find anyway to affect this value unless I listen for the lifecycle event and then configure the KeycloakAuthenticatorValve.
What am I doing wrong here?
@Configuration
public class KeycloakAuthenticatorValveCustomizerConfig implements EmbeddedServletContainerCustomizer, LifecycleListener
{
private TomcatEmbeddedServletContainerFactory container;
@Override
public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer)
{
container = (TomcatEmbeddedServletContainerFactory) configurableEmbeddedServletContainer;
container.addContextLifecycleListeners(this);
}
@Override
public void lifecycleEvent(LifecycleEvent event)
{
if (event.getLifecycle().getState() == INITIALIZED) {
configureKeycloakValve();
}
}
private void configureKeycloakValve() {
for (Valve valve : container.getContextValves()) {
if (valve instanceof KeycloakAuthenticatorValve) {
KeycloakAuthenticatorValve keycloakAuthenticatorValve = (KeycloakAuthenticatorValve) valve;
keycloakAuthenticatorValve.setSecurePagesWithPragma(true);
}
}
}
}
Within org.apache.catalina.authenticator.AuthenticatorBase securePagesWithPragma is now set to true.
if (constraints != null && disableProxyCaching &&
!"POST".equalsIgnoreCase(request.getMethod())) {
if (securePagesWithPragma) {
// Note: These can cause problems with downloading files with IE
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
} else {
response.setHeader("Cache-Control", "private");
}
response.setHeader("Expires", DATE_ONE);
}
-dana
More information about the keycloak-user
mailing list