Example usage for org.springframework.security.web.savedrequest SavedRequest getParameterValues

List of usage examples for org.springframework.security.web.savedrequest SavedRequest getParameterValues

Introduction

In this page you can find the example usage for org.springframework.security.web.savedrequest SavedRequest getParameterValues.

Prototype

String[] getParameterValues(String name);

Source Link

Usage

From source file:it.smartcommunitylab.aac.controller.AuthController.java

/**
 * Redirect to the login type selection page.
 * //from  w w w  .j a va  2s.  c  o  m
 * @param req
 * @return
 * @throws Exception
 */
@RequestMapping("/login")
public ModelAndView login(HttpServletRequest req, HttpServletResponse res) throws Exception {
    Map<String, Object> model = new HashMap<String, Object>();
    Map<String, String> authorities = attributesAdapter.getWebAuthorityUrls();

    SavedRequest savedRequest = requestCache.getRequest(req, res);
    String target = savedRequest != null ? savedRequest.getRedirectUrl() : prepareRedirect(req, "/dev");
    req.getSession().setAttribute("redirect", target);

    Map<String, String> resultAuthorities = authorities;
    // If original request has client_id parameter, reduce the authorities to the ones of the client app
    if (savedRequest != null) {
        String[] clientIds = savedRequest.getParameterValues(OAuth2Utils.CLIENT_ID);
        if (clientIds != null && clientIds.length > 0) {
            String clientId = clientIds[0];

            Set<String> idps = clientDetailsAdapter.getIdentityProviders(clientId);
            String[] loginAuthoritiesParam = savedRequest.getParameterValues("authorities");
            String loginAuthorities = "";
            if (loginAuthoritiesParam != null && loginAuthoritiesParam.length > 0) {
                loginAuthorities = StringUtils.arrayToCommaDelimitedString(loginAuthoritiesParam);
            }

            Set<String> all = null;
            if (StringUtils.hasText(loginAuthorities)) {
                all = new HashSet<String>(Arrays.asList(loginAuthorities.split(",")));
            } else {
                all = new HashSet<String>(authorities.keySet());
            }
            resultAuthorities = new HashMap<String, String>();
            for (String idp : all) {
                if (authorities.containsKey(idp) && idps.contains(idp))
                    resultAuthorities.put(idp, authorities.get(idp));
            }

            if (resultAuthorities.isEmpty()) {
                model.put("message", "No Identity Providers assigned to the app");
                return new ModelAndView("oauth_error", model);
            }
            req.getSession().setAttribute(OAuth2Utils.CLIENT_ID, clientId);
            if (resultAuthorities.size() == 1 && !resultAuthorities.containsKey(Config.IDP_INTERNAL)) {
                return new ModelAndView(
                        "redirect:" + Utils.filterRedirectURL(resultAuthorities.keySet().iterator().next()));
            }
        }
    }
    req.getSession().setAttribute("authorities", resultAuthorities);

    return new ModelAndView("login", model);
}

From source file:org.cbioportal.security.spring.PortalSavedRequestAwareAuthenticationSuccessHandler.java

@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
        Authentication authentication) throws ServletException, IOException {
    SavedRequest savedRequest = requestCache.getRequest(request, response);

    if (savedRequest == null) {
        super.onAuthenticationSuccess(request, response, authentication);

        return;//from  w ww  .j a va 2s  .  c om
    }

    if (isAlwaysUseDefaultTargetUrl()) {
        requestCache.removeRequest(request, response);
        super.onAuthenticationSuccess(request, response, authentication);

        return;
    }

    String targetUrlParameter = getTargetUrlParameter();
    String targetUrl = null;
    String[] targetUrlParameterValues = savedRequest.getParameterValues(targetUrlParameter);

    if (targetUrlParameter != null && targetUrlParameterValues != null && targetUrlParameterValues.length > 0
            && StringUtils.hasText(targetUrlParameterValues[0])) {
        requestCache.removeRequest(request, response);
        // force this to be relative
        targetUrl = getRelativeURI(request, savedRequest.getParameterValues(targetUrlParameter)[0]);
        Assert.notNull(targetUrl, "'" + savedRequest.getParameterValues(targetUrlParameter)[0]
                + "' could not be turned into a valid relative URI");
        Assert.isTrue(StringUtils.hasText(targetUrl),
                "'" + savedRequest.getParameterValues(targetUrlParameter)[0]
                        + "' could not be turned into a valid relative URI");
    } else {
        clearAuthenticationAttributes(request);
        // Use the DefaultSavedRequest URL
        targetUrl = savedRequest.getRedirectUrl();
    }

    logger.debug("Redirecting to Url: " + targetUrl);
    getRedirectStrategy().sendRedirect(request, response, targetUrl);
}

From source file:org.cloudfoundry.identity.uaa.login.LoginInfoEndpoint.java

protected boolean hasSavedOauthAuthorizeRequest(HttpSession session) {
    if (session == null || session.getAttribute(SAVED_REQUEST_SESSION_ATTRIBUTE) == null) {
        return false;
    }//  ww  w .j  a v a2s.  co m
    SavedRequest savedRequest = (SavedRequest) session.getAttribute(SAVED_REQUEST_SESSION_ATTRIBUTE);
    String redirectUrl = savedRequest.getRedirectUrl();
    String[] client_ids = savedRequest.getParameterValues("client_id");
    if (redirectUrl != null && redirectUrl.contains("/oauth/authorize") && client_ids != null
            && client_ids.length != 0) {
        return true;
    }
    return false;
}

From source file:org.cloudfoundry.identity.uaa.login.LoginInfoEndpoint.java

public Map<String, Object> getClientInfo(HttpSession session) {
    if (!hasSavedOauthAuthorizeRequest(session)) {
        return null;
    }/*w  w w. ja  va  2s . co  m*/
    SavedRequest savedRequest = (SavedRequest) session.getAttribute(SAVED_REQUEST_SESSION_ATTRIBUTE);
    String[] client_ids = savedRequest.getParameterValues("client_id");
    try {
        ClientDetails clientDetails = clientDetailsService.loadClientByClientId(client_ids[0],
                IdentityZoneHolder.get().getId());
        return clientDetails.getAdditionalInformation();
    } catch (NoSuchClientException x) {
        return null;
    }
}

From source file:org.cloudfoundry.identity.uaa.login.LoginInfoEndpoint.java

@RequestMapping(value = "/login/idp_discovery", method = RequestMethod.POST)
public String discoverIdentityProvider(@RequestParam String email,
        @RequestParam(required = false) String skipDiscovery, Model model, HttpSession session,
        HttpServletRequest request) {/*  ww w .  j  a v  a2 s .  c  o m*/
    ClientDetails clientDetails = null;
    if (hasSavedOauthAuthorizeRequest(session)) {
        SavedRequest savedRequest = (SavedRequest) session.getAttribute(SAVED_REQUEST_SESSION_ATTRIBUTE);
        String[] client_ids = savedRequest.getParameterValues("client_id");
        try {
            clientDetails = clientDetailsService.loadClientByClientId(client_ids[0],
                    IdentityZoneHolder.get().getId());
        } catch (NoSuchClientException e) {
        }
    }
    List<IdentityProvider> identityProviders = DomainFilter.filter(
            providerProvisioning.retrieveActive(IdentityZoneHolder.get().getId()), clientDetails, email);

    if (!StringUtils.hasText(skipDiscovery) && identityProviders.size() == 1) {
        IdentityProvider matchedIdp = identityProviders.get(0);
        if (matchedIdp.getType().equals(UAA)) {
            return goToPasswordPage(email, model);
        } else {
            String redirectUrl;
            if ((redirectUrl = redirectToExternalProvider(matchedIdp.getConfig(), matchedIdp.getOriginKey(),
                    request)) != null) {
                return redirectUrl;
            }
        }
    }

    if (StringUtils.hasText(email)) {
        model.addAttribute("email", email);
    }
    return "redirect:/login?discoveryPerformed=true";
}

From source file:org.orcid.frontend.web.controllers.OauthConfirmAccessController.java

@RequestMapping(value = "/custom/register.json", method = RequestMethod.POST)
public @ResponseBody OauthRegistrationForm checkRegisterForm(HttpServletRequest request,
        HttpServletResponse response, @RequestBody OauthRegistrationForm form) {
    form.setErrors(new ArrayList<String>());

    if (form.getApproved()) {
        registrationController.validateRegistrationFields(request, form);
        registrationController.validateGrcaptcha(request, form);
    } else {//from  w w w  .  j  av  a 2  s.co m
        SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response);
        String stateParam = null;

        if (savedRequest != null && savedRequest.getParameterMap() != null
                && savedRequest.getParameterValues("state") != null) {
            if (savedRequest.getParameterValues("state").length > 0)
                stateParam = savedRequest.getParameterValues("state")[0];
        }
        form.setRedirectUri(Text.valueOf(buildDenyRedirectUri(form.getRedirectUri().getValue(), stateParam)));
    }

    return form;
}