List of usage examples for org.springframework.security.web.savedrequest SavedRequest getParameterValues
String[] getParameterValues(String name);
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; }