@Nonnull @Override protected Event doExecute( final @Nonnull RequestContext springRequestContext, final @Nonnull ProfileRequestContext profileRequestContext) { final ParameterMap params = springRequestContext.getRequestParameters(); final String service = params.get(ProtocolParam.Service.id()); if (service == null) { return ProtocolError.ServiceNotSpecified.event(this); } final String ticket = params.get(ProtocolParam.Ticket.id()); if (ticket == null) { return ProtocolError.TicketNotSpecified.event(this); } final TicketValidationRequest ticketValidationRequest = new TicketValidationRequest(service, ticket); final String renew = params.get(ProtocolParam.Renew.id()); if (renew != null) { ticketValidationRequest.setRenew(true); } ticketValidationRequest.setPgtUrl(params.get(ProtocolParam.PgtUrl.id())); final MessageContext messageContext = new MessageContext(); messageContext.setMessage(ticketValidationRequest); profileRequestContext.setInboundMessageContext(messageContext); FlowStateSupport.setTicketValidationRequest(springRequestContext, ticketValidationRequest); return ActionSupport.buildProceedEvent(this); }
/** {@inheritDoc} */ @Nonnull @Override protected Event doExecute( final @Nonnull RequestContext springRequestContext, final @Nonnull ProfileRequestContext<ServiceTicketRequest, Object> profileRequestContext) { final ServiceTicketRequest request = FlowStateSupport.getServiceTicketRequest(springRequestContext); // Per http://www.jasig.org/cas/protocol section 2.1.1 // It is RECOMMENDED that renew supersede gateway if (request.isRenew()) { return new Event(this, Events.RenewRequested.id()); } if (request.isGateway()) { return new Event(this, Events.GatewayRequested.id()); } final SessionContext sessionCtx = profileRequestContext.getSubcontext(SessionContext.class, false); Events result; if (sessionCtx != null) { final IdPSession session = sessionCtx.getIdPSession(); if (session != null) { log.debug("Found session ID {}", session.getId()); try { // Timeout check updates session lastActivityInstant field if (session.checkTimeout()) { result = Events.SessionFound; } else { result = Events.SessionNotFound; } } catch (SessionException e) { log.debug("Error performing session timeout check. Assuming session has expired.", e); result = Events.SessionNotFound; } } else { log.debug("Session not found."); result = Events.SessionNotFound; } } else { log.debug("Session context not found."); result = Events.SessionNotFound; } return result.event(this); }