| | |
| | | import org.jboss.resteasy.annotations.cache.NoCache; |
| | | import org.jboss.resteasy.spi.HttpRequest; |
| | | import org.keycloak.common.ClientConnection; |
| | | import org.keycloak.events.Details; |
| | | import org.keycloak.events.Errors; |
| | | import org.keycloak.events.EventBuilder; |
| | | import org.keycloak.events.EventType; |
| | | import org.keycloak.models.ClientModel; |
| | | import org.keycloak.models.KeycloakSession; |
| | | import org.keycloak.models.RealmModel; |
| | |
| | | private HttpHeaders headers; |
| | | |
| | | private RealmModel realm; |
| | | private EventBuilder event; |
| | | private ClientModel client; |
| | | private String redirectUri; |
| | | |
| | | public LogoutEndpoint(RealmModel realm, EventBuilder event) { |
| | | public LogoutEndpoint(RealmModel realm) { |
| | | this.realm = realm; |
| | | this.event = event; |
| | | } |
| | | |
| | | @GET |
| | |
| | | if (authResult != null) { |
| | | UserSessionModel userSession = authResult.getSession(); |
| | | userSession.setNote(AuthenticationManager.KEYCLOAK_LOGOUT_PROTOCOL, CASLoginProtocol.LOGIN_PROTOCOL); |
| | | if (redirectUri != null) userSession.setNote(CASLoginProtocol.LOGOUT_REDIRECT_URI, redirectUri); |
| | | |
| | | if (redirectUri != null) { |
| | | userSession.setNote(CASLoginProtocol.LOGOUT_REDIRECT_URI, redirectUri); |
| | | } |
| | | |
| | | logger.debug("Initiating CAS browser logout"); |
| | | Response response = AuthenticationManager.browserLogout(session, realm, authResult.getSession(), session.getContext().getUri(), clientConnection, headers, null); |
| | | Response response = AuthenticationManager.browserLogout(session, realm, authResult.getSession(), session.getContext().getUri(), clientConnection, headers); |
| | | logger.debug("finishing CAS browser logout"); |
| | | return response; |
| | | } |
| | |
| | | return; |
| | | } |
| | | |
| | | client = realm.getClients().stream() |
| | | client = realm.getClientsStream() |
| | | .filter(c -> CASLoginProtocol.LOGIN_PROTOCOL.equals(c.getProtocol())) |
| | | .filter(c -> RedirectUtils.verifyRedirectUri(session.getContext().getUri(), service, realm, c) != null) |
| | | .filter(c -> RedirectUtils.verifyRedirectUri(session, service, c) != null) |
| | | .findFirst().orElse(null); |
| | | if (client != null) { |
| | | redirectUri = RedirectUtils.verifyRedirectUri(session.getContext().getUri(), service, realm, client); |
| | | redirectUri = RedirectUtils.verifyRedirectUri(session, service, client); |
| | | |
| | | session.getContext().setClient(client); |
| | | } |