From cbb2f2f81452a97fddbdcc1f6010fbc85682e3b3 Mon Sep 17 00:00:00 2001 From: Erlend Hamnaberg <erlend@hamnaberg.net> Date: Thu, 29 Nov 2018 07:42:20 +0000 Subject: [PATCH] Redirect to application after login is complete --- src/main/java/org/keycloak/protocol/cas/endpoints/ServiceValidateEndpoint.java | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/keycloak/protocol/cas/endpoints/ServiceValidateEndpoint.java b/src/main/java/org/keycloak/protocol/cas/endpoints/ServiceValidateEndpoint.java index 64da5b6..291b74e 100644 --- a/src/main/java/org/keycloak/protocol/cas/endpoints/ServiceValidateEndpoint.java +++ b/src/main/java/org/keycloak/protocol/cas/endpoints/ServiceValidateEndpoint.java @@ -1,10 +1,7 @@ package org.keycloak.protocol.cas.endpoints; import org.keycloak.events.EventBuilder; -import org.keycloak.models.KeycloakSessionFactory; -import org.keycloak.models.ProtocolMapperModel; -import org.keycloak.models.RealmModel; -import org.keycloak.models.UserSessionModel; +import org.keycloak.models.*; import org.keycloak.protocol.ProtocolMapper; import org.keycloak.protocol.cas.mappers.CASAttributeMapper; import org.keycloak.protocol.cas.representations.CASServiceResponse; @@ -12,6 +9,7 @@ import org.keycloak.protocol.cas.utils.ContentTypeHelper; import org.keycloak.protocol.cas.utils.ServiceResponseHelper; import org.keycloak.services.managers.ClientSessionCode; +import org.keycloak.services.util.DefaultClientSessionContext; import javax.ws.rs.core.*; import java.util.HashMap; @@ -29,14 +27,16 @@ @Override protected Response successResponse() { UserSessionModel userSession = clientSession.getUserSession(); + // CAS protocol does not support scopes, so pass null scopeParam + ClientSessionContext clientSessionCtx = DefaultClientSessionContext.fromClientSessionAndScopeParameter(clientSession, null); - Set<ProtocolMapperModel> mappings = new ClientSessionCode(session, realm, clientSession).getRequestedProtocolMappers(); + Set<ProtocolMapperModel> mappings = clientSessionCtx.getProtocolMappers(); KeycloakSessionFactory sessionFactory = session.getKeycloakSessionFactory(); Map<String, Object> attributes = new HashMap<>(); for (ProtocolMapperModel mapping : mappings) { ProtocolMapper mapper = (ProtocolMapper) sessionFactory.getProviderFactory(ProtocolMapper.class, mapping.getProtocolMapper()); if (mapper instanceof CASAttributeMapper) { - ((CASAttributeMapper) mapper).setAttribute(attributes, mapping, userSession); + ((CASAttributeMapper) mapper).setAttribute(attributes, mapping, userSession, session, clientSessionCtx); } } @@ -51,7 +51,7 @@ } private Response prepare(Response.Status status, CASServiceResponse serviceResponse) { - MediaType responseMediaType = new ContentTypeHelper(request, restRequest, uriInfo).selectResponseType(); + MediaType responseMediaType = new ContentTypeHelper(request, restRequest, session.getContext().getUri()).selectResponseType(); return ServiceResponseHelper.createResponse(status, responseMediaType, serviceResponse); } } -- Gitblit v1.9.1