Class KeycloakWebAuthenticationPlugin

  • All Implemented Interfaces:
    io.vertigo.core.node.component.CoreComponent, io.vertigo.core.node.component.Plugin, WebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>

    public class KeycloakWebAuthenticationPlugin
    extends Object
    implements WebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>
    This class provides workflow for authenticating Vertigo users with a keycloak server using OpenIdConnect protocol. It wraps official keycloack servlet filter KeycloakOIDCFilter for compatibility with Vertigo
    Author:
    mlaroche, skerdudou
    • Method Detail

      • getUrlPrefix

        public String getUrlPrefix()
        Url prefix of urls that are protected with this authentication plugin
        Specified by:
        getUrlPrefix in interface WebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>
        Returns:
        the prefix
      • getExternalUrlOptional

        public Optional<String> getExternalUrlOptional()
        Return an optional external url of the application (if it is behind a firewall or a proxy)
        Specified by:
        getExternalUrlOptional in interface WebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>
        Returns:
        the external url of the app : as seen by the end user
      • doHandleCallback

        public AuthenticationResult<org.keycloak.KeycloakPrincipal> doHandleCallback​(javax.servlet.http.HttpServletRequest request,
                                                                                     javax.servlet.http.HttpServletResponse response)
        Description copied from interface: WebAuthenticationPlugin
        Handle the callback request after login on the sso
        Specified by:
        doHandleCallback in interface WebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>
        Parameters:
        request - the request
        response - the response to consume
        Returns:
        result of login challenge, providing info of the logged in user
      • doInterceptRequest

        public io.vertigo.core.lang.Tuple<AuthenticationResult<org.keycloak.KeycloakPrincipal>,​javax.servlet.http.HttpServletRequest> doInterceptRequest​(javax.servlet.http.HttpServletRequest request,
                                                                                                                                                               javax.servlet.http.HttpServletResponse response)
        Specified by:
        doInterceptRequest in interface WebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>
      • doRedirectToSso

        public void doRedirectToSso​(javax.servlet.http.HttpServletRequest request,
                                    javax.servlet.http.HttpServletResponse response)
        Description copied from interface: WebAuthenticationPlugin
        Handle the redirect to the sso login page
        Specified by:
        doRedirectToSso in interface WebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>
        Parameters:
        request - the request
        response - the response to consume
      • doLogout

        public boolean doLogout​(javax.servlet.http.HttpServletRequest httpRequest,
                                javax.servlet.http.HttpServletResponse httpResponse)
        Specified by:
        doLogout in interface WebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>
      • getUrlHandlers

        public Map<String,​BiFunction<javax.servlet.http.HttpServletRequest,​javax.servlet.http.HttpServletResponse,​io.vertigo.core.lang.Tuple<Boolean,​javax.servlet.http.HttpServletRequest>>> getUrlHandlers()
        Description copied from interface: WebAuthenticationPlugin
        Register additionnal handler for specific request necessary for the plugin
        Specified by:
        getUrlHandlers in interface WebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>
        Returns:
        le map of specific handlers
      • getRequestedUri

        public Optional<String> getRequestedUri​(javax.servlet.http.HttpServletRequest httpRequest)
        Description copied from interface: WebAuthenticationPlugin
        Return the original request a user wanted before beeing redirected to the sso
        Specified by:
        getRequestedUri in interface WebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>
        Parameters:
        httpRequest - the request
        Returns:
        the uri