Class KeycloakWebAuthenticationPlugin
- java.lang.Object
-
- io.vertigo.vega.plugins.authentication.keycloak.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 filterKeycloakOIDCFilterfor compatibility with Vertigo- Author:
- mlaroche, skerdudou
-
-
Constructor Summary
Constructors Constructor Description KeycloakWebAuthenticationPlugin(Optional<String> urlPrefixOpt, Optional<String> urlHandlerPrefixOpt, Optional<String> connectorNameOpt, Optional<String> postUrlRedirectOpt, List<io.vertigo.connectors.keycloak.KeycloakDeploymentConnector> keycloakDeploymentConnectors, VSecurityManager securityManager)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AuthenticationResult<org.keycloak.KeycloakPrincipal>doHandleCallback(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Handle the callback request after login on the ssoio.vertigo.core.lang.Tuple<AuthenticationResult<org.keycloak.KeycloakPrincipal>,javax.servlet.http.HttpServletRequest>doInterceptRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)booleandoLogout(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse)voiddoRedirectToSso(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Handle the redirect to the sso login pageStringgetCallbackUrl()Returns the url for callbackOptional<String>getExternalUrlOptional()Return an optional external url of the application (if it is behind a firewall or a proxy)StringgetLogoutUrl()Returns the url for logoutOptional<String>getRequestedUri(javax.servlet.http.HttpServletRequest httpRequest)Return the original request a user wanted before beeing redirected to the ssoStringgetUrlHandlerPrefix()Url prefix of request directly handled by the pluginMap<String,BiFunction<javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,io.vertigo.core.lang.Tuple<Boolean,javax.servlet.http.HttpServletRequest>>>getUrlHandlers()Register additionnal handler for specific request necessary for the pluginStringgetUrlPrefix()Url prefix of urls that are protected with this authentication plugin
-
-
-
Constructor Detail
-
KeycloakWebAuthenticationPlugin
@Inject public KeycloakWebAuthenticationPlugin(Optional<String> urlPrefixOpt, Optional<String> urlHandlerPrefixOpt, Optional<String> connectorNameOpt, Optional<String> postUrlRedirectOpt, List<io.vertigo.connectors.keycloak.KeycloakDeploymentConnector> keycloakDeploymentConnectors, VSecurityManager securityManager)
-
-
Method Detail
-
getUrlPrefix
public String getUrlPrefix()
Url prefix of urls that are protected with this authentication plugin- Specified by:
getUrlPrefixin interfaceWebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>- Returns:
- the prefix
-
getUrlHandlerPrefix
public String getUrlHandlerPrefix()
Url prefix of request directly handled by the plugin- Specified by:
getUrlHandlerPrefixin interfaceWebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>- Returns:
- the prefix
-
getCallbackUrl
public String getCallbackUrl()
Returns the url for callback- Specified by:
getCallbackUrlin interfaceWebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>- Returns:
- url for callback
-
getLogoutUrl
public String getLogoutUrl()
Returns the url for logout- Specified by:
getLogoutUrlin interfaceWebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>- Returns:
- url for logout
-
getExternalUrlOptional
public Optional<String> getExternalUrlOptional()
Return an optional external url of the application (if it is behind a firewall or a proxy)- Specified by:
getExternalUrlOptionalin interfaceWebAuthenticationPlugin<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:WebAuthenticationPluginHandle the callback request after login on the sso- Specified by:
doHandleCallbackin interfaceWebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>- Parameters:
request- the requestresponse- 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:
doInterceptRequestin interfaceWebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>
-
doRedirectToSso
public void doRedirectToSso(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Description copied from interface:WebAuthenticationPluginHandle the redirect to the sso login page- Specified by:
doRedirectToSsoin interfaceWebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>- Parameters:
request- the requestresponse- the response to consume
-
doLogout
public boolean doLogout(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse)- Specified by:
doLogoutin interfaceWebAuthenticationPlugin<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:WebAuthenticationPluginRegister additionnal handler for specific request necessary for the plugin- Specified by:
getUrlHandlersin interfaceWebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>- Returns:
- le map of specific handlers
-
getRequestedUri
public Optional<String> getRequestedUri(javax.servlet.http.HttpServletRequest httpRequest)
Description copied from interface:WebAuthenticationPluginReturn the original request a user wanted before beeing redirected to the sso- Specified by:
getRequestedUriin interfaceWebAuthenticationPlugin<org.keycloak.KeycloakPrincipal>- Parameters:
httpRequest- the request- Returns:
- the uri
-
-