![JAR search and dependency download from the Maven repository](/logo.png)
de.ahus1.keycloak.dropwizard.AbstractKeycloakAuthenticator Maven / Gradle / Ivy
Show all versions of keycloak-dropwizard Show documentation
package de.ahus1.keycloak.dropwizard;
import io.dropwizard.auth.AuthenticationException;
import io.dropwizard.auth.Authenticator;
import jakarta.servlet.http.HttpServletRequest;
import org.keycloak.KeycloakSecurityContext;
import java.security.Principal;
import java.util.Optional;
/**
* Authentication to make it work with Keycloak.
*
* @param authentication class you will use throughout your application.
* You can use AbstractAuthentication as a base class here.
*/
public abstract class AbstractKeycloakAuthenticator
implements Authenticator {
private final KeycloakConfiguration keycloakConfiguration;
public AbstractKeycloakAuthenticator(final KeycloakConfiguration keycloakConfiguration) {
this.keycloakConfiguration = keycloakConfiguration;
}
@Override
public Optional authenticate(HttpServletRequest request) throws AuthenticationException {
KeycloakSecurityContext securityContext =
(KeycloakSecurityContext) request.getAttribute(KeycloakSecurityContext.class.getName());
if (securityContext != null) {
return Optional.ofNullable(prepareAuthentication(securityContext, request, keycloakConfiguration));
} else {
return Optional.empty();
}
}
protected abstract P prepareAuthentication(KeycloakSecurityContext securityContext, HttpServletRequest request,
KeycloakConfiguration keycloakConfiguration);
}