Java Code Examples for org.keycloak.adapters.spi.AuthOutcome#LOGGED_OUT
The following examples show how to use
org.keycloak.adapters.spi.AuthOutcome#LOGGED_OUT .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AbstractSamlAuthenticationHandler.java From keycloak with Apache License 2.0 | 5 votes |
protected AuthOutcome handleLogoutResponse(SAMLDocumentHolder holder, StatusResponseType responseType, String relayState) { boolean loggedIn = sessionStore.isLoggedIn(); if (!loggedIn || !"logout".equals(relayState)) { return AuthOutcome.NOT_ATTEMPTED; } sessionStore.logoutAccount(); return AuthOutcome.LOGGED_OUT; }
Example 2
Source File: SamlFilter.java From keycloak with Apache License 2.0 | 4 votes |
@Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; ServletHttpFacade facade = new ServletHttpFacade(request, response); SamlDeployment deployment = deploymentContext.resolveDeployment(facade); if (deployment == null || !deployment.isConfigured()) { response.sendError(403); log.fine("deployment not configured"); return; } FilterSamlSessionStore tokenStore = new FilterSamlSessionStore(request, facade, 100000, idMapper, deployment); boolean isEndpoint = request.getRequestURI().substring(request.getContextPath().length()).endsWith("/saml"); SamlAuthenticator authenticator; if (isEndpoint) { authenticator = new SamlAuthenticator(facade, deployment, tokenStore) { @Override protected void completeAuthentication(SamlSession account) { } @Override protected SamlAuthenticationHandler createBrowserHandler(HttpFacade facade, SamlDeployment deployment, SamlSessionStore sessionStore) { return new SamlEndpoint(facade, deployment, sessionStore); } }; } else { authenticator = new SamlAuthenticator(facade, deployment, tokenStore) { @Override protected void completeAuthentication(SamlSession account) { } @Override protected SamlAuthenticationHandler createBrowserHandler(HttpFacade facade, SamlDeployment deployment, SamlSessionStore sessionStore) { return new BrowserHandler(facade, deployment, sessionStore); } }; } AuthOutcome outcome = authenticator.authenticate(); if (outcome == AuthOutcome.AUTHENTICATED) { log.fine("AUTHENTICATED"); if (facade.isEnded()) { return; } HttpServletRequestWrapper wrapper = tokenStore.getWrap(); chain.doFilter(wrapper, res); return; } if (outcome == AuthOutcome.LOGGED_OUT) { tokenStore.logoutAccount(); String logoutPage = deployment.getLogoutPage(); if (logoutPage != null) { if (PROTOCOL_PATTERN.matcher(logoutPage).find()) { response.sendRedirect(logoutPage); log.log(Level.FINE, "Redirected to logout page {0}", logoutPage); } else { RequestDispatcher disp = req.getRequestDispatcher(logoutPage); disp.forward(req, res); } return; } chain.doFilter(req, res); return; } AuthChallenge challenge = authenticator.getChallenge(); if (challenge != null) { log.fine("challenge"); challenge.challenge(facade); return; } if (deployment.isIsPassive() && outcome == AuthOutcome.NOT_AUTHENTICATED) { log.fine("PASSIVE_NOT_AUTHENTICATED"); if (facade.isEnded()) { return; } chain.doFilter(req, res); return; } if (!facade.isEnded()) { response.sendError(403); } }
Example 3
Source File: AbstractSamlAuthMech.java From keycloak with Apache License 2.0 | 4 votes |
/** * Call this inside your authenticate method. */ public AuthenticationMechanismOutcome authenticate(HttpServerExchange exchange, SecurityContext securityContext) { UndertowHttpFacade facade = createFacade(exchange); SamlDeployment deployment = deploymentContext.resolveDeployment(facade); if (!deployment.isConfigured()) { return AuthenticationMechanismOutcome.NOT_ATTEMPTED; } SamlSessionStore sessionStore = getTokenStore(exchange, facade, deployment, securityContext); SamlAuthenticator authenticator = null; if (exchange.getRequestPath().endsWith("/saml")) { authenticator = new UndertowSamlEndpoint(facade, deploymentContext.resolveDeployment(facade), sessionStore); } else { authenticator = new UndertowSamlAuthenticator(securityContext, facade, deploymentContext.resolveDeployment(facade), sessionStore); } AuthOutcome outcome = authenticator.authenticate(); if (outcome == AuthOutcome.AUTHENTICATED) { registerNotifications(securityContext); return AuthenticationMechanismOutcome.AUTHENTICATED; } if (outcome == AuthOutcome.NOT_AUTHENTICATED) { // we are in passive mode and user is not authenticated, let app server to try another auth mechanism // See KEYCLOAK-2107, AbstractSamlAuthenticationHandler return AuthenticationMechanismOutcome.NOT_ATTEMPTED; } if (outcome == AuthOutcome.LOGGED_OUT) { securityContext.logout(); if (deployment.getLogoutPage() != null) { redirectLogout(deployment, exchange); } return AuthenticationMechanismOutcome.NOT_ATTEMPTED; } AuthChallenge challenge = authenticator.getChallenge(); if (challenge != null) { exchange.putAttachment(KEYCLOAK_CHALLENGE_ATTACHMENT_KEY, challenge); if (authenticator instanceof UndertowSamlEndpoint) { exchange.getSecurityContext().setAuthenticationRequired(); } } if (outcome == AuthOutcome.FAILED) { return AuthenticationMechanismOutcome.NOT_AUTHENTICATED; } return AuthenticationMechanismOutcome.NOT_ATTEMPTED; }
Example 4
Source File: AbstractSamlAuthenticator.java From keycloak with Apache License 2.0 | 4 votes |
@Override public Authentication validateRequest(ServletRequest req, ServletResponse res, boolean mandatory) throws ServerAuthException { if (log.isTraceEnabled()) { log.trace("*** authenticate"); } Request request = resolveRequest(req); JettyHttpFacade facade = new JettyHttpFacade(request, (HttpServletResponse) res); SamlDeployment deployment = deploymentContext.resolveDeployment(facade); if (deployment == null || !deployment.isConfigured()) { log.debug("*** deployment isn't configured return false"); return Authentication.UNAUTHENTICATED; } boolean isEndpoint = request.getRequestURI().substring(request.getContextPath().length()).endsWith("/saml"); if (!mandatory && !isEndpoint) return new DeferredAuthentication(this); JettySamlSessionStore tokenStore = getTokenStore(request, facade, deployment); SamlAuthenticator authenticator = null; if (isEndpoint) { authenticator = new SamlAuthenticator(facade, deployment, tokenStore) { @Override protected void completeAuthentication(SamlSession account) { } @Override protected SamlAuthenticationHandler createBrowserHandler(HttpFacade facade, SamlDeployment deployment, SamlSessionStore sessionStore) { return new SamlEndpoint(facade, deployment, sessionStore); } }; } else { authenticator = new SamlAuthenticator(facade, deployment, tokenStore) { @Override protected void completeAuthentication(SamlSession account) { } @Override protected SamlAuthenticationHandler createBrowserHandler(HttpFacade facade, SamlDeployment deployment, SamlSessionStore sessionStore) { return new BrowserHandler(facade, deployment, sessionStore); } }; } AuthOutcome outcome = authenticator.authenticate(); if (outcome == AuthOutcome.AUTHENTICATED) { if (facade.isEnded()) { return Authentication.SEND_SUCCESS; } SamlSession samlSession = tokenStore.getAccount(); Authentication authentication = register(request, samlSession); return authentication; } if (outcome == AuthOutcome.LOGGED_OUT) { logoutCurrent(request); if (deployment.getLogoutPage() != null) { forwardToLogoutPage(request, (HttpServletResponse)res, deployment); } return Authentication.SEND_CONTINUE; } AuthChallenge challenge = authenticator.getChallenge(); if (challenge != null) { challenge.challenge(facade); } return Authentication.SEND_CONTINUE; }
Example 5
Source File: KeycloakHttpServerAuthenticationMechanism.java From keycloak with Apache License 2.0 | 4 votes |
@Override public void evaluateRequest(HttpServerRequest request) throws HttpAuthenticationException { LOGGER.debugf("Evaluating request for path [%s]", request.getRequestURI()); SamlDeploymentContext deploymentContext = getDeploymentContext(request); if (deploymentContext == null) { LOGGER.debugf("Ignoring request for path [%s] from mechanism [%s]. No deployment context found.", request.getRequestURI(), getMechanismName()); request.noAuthenticationInProgress(); return; } ElytronHttpFacade httpFacade = new ElytronHttpFacade(request, getSessionIdMapper(request), getSessionIdMapperUpdater(request), deploymentContext, callbackHandler); SamlDeployment deployment = httpFacade.getDeployment(); if (!deployment.isConfigured()) { request.noAuthenticationInProgress(); return; } if (deployment.getLogoutPage() != null && httpFacade.getRequest().getRelativePath().contains(deployment.getLogoutPage())) { LOGGER.debugf("Ignoring request for [%s] and logout page [%s].", request.getRequestURI(), deployment.getLogoutPage()); httpFacade.authenticationCompleteAnonymous(); return; } SamlAuthenticator authenticator; if (httpFacade.getRequest().getRelativePath().endsWith("/saml")) { authenticator = new ElytronSamlEndpoint(httpFacade, deployment); } else { authenticator = new ElytronSamlAuthenticator(httpFacade, deployment, callbackHandler); } AuthOutcome outcome = authenticator.authenticate(); if (outcome == AuthOutcome.AUTHENTICATED) { httpFacade.authenticationComplete(); return; } if (outcome == AuthOutcome.NOT_AUTHENTICATED) { httpFacade.noAuthenticationInProgress(null); return; } if (outcome == AuthOutcome.LOGGED_OUT) { if (deployment.getLogoutPage() != null) { redirectLogout(deployment, httpFacade); } httpFacade.authenticationInProgress(); return; } AuthChallenge challenge = authenticator.getChallenge(); if (challenge != null) { httpFacade.noAuthenticationInProgress(challenge); return; } if (outcome == AuthOutcome.FAILED) { httpFacade.authenticationFailed(); return; } httpFacade.authenticationInProgress(); }