Example usage for org.springframework.util LinkedMultiValueMap LinkedMultiValueMap

List of usage examples for org.springframework.util LinkedMultiValueMap LinkedMultiValueMap

Introduction

In this page you can find the example usage for org.springframework.util LinkedMultiValueMap LinkedMultiValueMap.

Prototype

public LinkedMultiValueMap() 

Source Link

Document

Create a new LinkedMultiValueMap that wraps a LinkedHashMap .

Usage

From source file:org.cloudfoundry.identity.uaa.integration.RemoteAuthenticationEndpointTests.java

private String getLoginReadBearerToken() {
    HttpHeaders accessTokenHeaders = new HttpHeaders();
    String basicDigestHeaderValue = "Basic "
            + new String(Base64.encodeBase64(("login:loginsecret").getBytes()));
    accessTokenHeaders.add("Authorization", basicDigestHeaderValue);

    LinkedMultiValueMap<String, String> params = new LinkedMultiValueMap<>();
    params.add("grant_type", "client_credentials");
    params.add("client_id", "login");
    params.add("scope", "oauth.login");
    ResponseEntity<Map> tokenResponse = serverRunning.postForMap(serverRunning.getAccessTokenUri(), params,
            accessTokenHeaders);/*from  ww  w  .ja  va2  s .  com*/
    return (String) tokenResponse.getBody().get("access_token");
}

From source file:org.cloudfoundry.identity.uaa.integration.RemoteAuthenticationEndpointTests.java

@SuppressWarnings("rawtypes")
ResponseEntity<Map> authenticate(String username, String password, Map<String, Object> additionalParams) {
    RestTemplate restTemplate = new RestTemplate();
    // The default java.net client doesn't allow you to handle 4xx responses
    restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
    if (restTemplate instanceof OAuth2RestTemplate) {
        OAuth2RestTemplate oAuth2RestTemplate = (OAuth2RestTemplate) restTemplate;
        oAuth2RestTemplate.setErrorHandler(
                new UaaOauth2ErrorHandler(oAuth2RestTemplate.getResource(), HttpStatus.Series.SERVER_ERROR));
    } else {/*from   ww  w . j a v a 2 s . c  o  m*/
        restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
            @Override
            protected boolean hasError(HttpStatus statusCode) {
                return statusCode.series() == HttpStatus.Series.SERVER_ERROR;
            }
        });
    }
    HttpHeaders headers = new HttpHeaders();
    if (additionalParams != null) {
        headers.add("Authorization", "Bearer " + getLoginReadBearerToken());
    }
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
    headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));

    MultiValueMap<String, Object> parameters = new LinkedMultiValueMap<String, Object>();
    parameters.set("username", username);
    if (password != null) {
        parameters.set("password", password);
    }
    if (additionalParams != null) {
        parameters.setAll(additionalParams);
    }

    ResponseEntity<Map> result = restTemplate.exchange(serverRunning.getUrl("/authenticate"), HttpMethod.POST,
            new HttpEntity<MultiValueMap<String, Object>>(parameters, headers), Map.class);
    return result;
}

From source file:org.cloudfoundry.identity.uaa.integration.ScimGroupEndpointsIntegrationTests.java

private OAuth2AccessToken getAccessTokenWithPassword(String clientId, String clientSecret, String username,
        String password) {//  w w w .j a  va  2 s . com
    MultiValueMap<String, String> formData = new LinkedMultiValueMap<String, String>();
    formData.add("client_id", clientId);
    formData.add("grant_type", "password");
    formData.add("username", username);
    formData.add("password", password);
    HttpHeaders tokenHeaders = new HttpHeaders();
    tokenHeaders.set("Authorization", testAccounts.getAuthorizationHeader(clientId, clientSecret));
    @SuppressWarnings("rawtypes")
    ResponseEntity<Map> tokenResponse = serverRunning.postForMap("/oauth/token", formData, tokenHeaders);
    assertEquals(HttpStatus.OK, tokenResponse.getStatusCode());
    @SuppressWarnings("unchecked")
    OAuth2AccessToken accessToken = DefaultOAuth2AccessToken.valueOf(tokenResponse.getBody());
    return accessToken;
}

From source file:org.cloudfoundry.identity.uaa.integration.ScimGroupEndpointsIntegrationTests.java

private OAuth2AccessToken getAccessToken(String clientId, String clientSecret, String username, String password)
        throws URISyntaxException {
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Arrays.asList(MediaType.TEXT_HTML, MediaType.ALL));

    URI uri = serverRunning.buildUri("/oauth/authorize").queryParam("response_type", "code")
            .queryParam("state", "mystateid").queryParam("client_id", clientId)
            .queryParam("redirect_uri", "http://anywhere.com").build();
    ResponseEntity<Void> result = serverRunning.createRestTemplate().exchange(uri.toString(), HttpMethod.GET,
            new HttpEntity<>(null, headers), Void.class);
    assertEquals(HttpStatus.FOUND, result.getStatusCode());
    String location = result.getHeaders().getLocation().toString();

    if (result.getHeaders().containsKey("Set-Cookie")) {
        for (String cookie : result.getHeaders().get("Set-Cookie")) {
            headers.add("Cookie", cookie);
        }/*from   w w  w . j a v a  2s .co m*/
    }

    ResponseEntity<String> response = serverRunning.getForString(location, headers);
    // should be directed to the login screen...
    assertTrue(response.getBody().contains("/login.do"));
    assertTrue(response.getBody().contains("username"));
    assertTrue(response.getBody().contains("password"));

    if (response.getHeaders().containsKey("Set-Cookie")) {
        String cookie = response.getHeaders().getFirst("Set-Cookie");
        headers.add("Cookie", cookie);
    }

    MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
    formData.add("username", username);
    formData.add("password", password);
    formData.add(CookieBasedCsrfTokenRepository.DEFAULT_CSRF_COOKIE_NAME,
            IntegrationTestUtils.extractCookieCsrf(response.getBody()));

    // Should be redirected to the original URL, but now authenticated
    result = serverRunning.postForResponse("/login.do", headers, formData);
    assertEquals(HttpStatus.FOUND, result.getStatusCode());

    headers.remove("Cookie");
    if (result.getHeaders().containsKey("Set-Cookie")) {
        for (String cookie : result.getHeaders().get("Set-Cookie")) {
            headers.add("Cookie", cookie);
        }
    }

    response = serverRunning.createRestTemplate().exchange(
            new URI(result.getHeaders().getLocation().toString()), HttpMethod.GET,
            new HttpEntity<>(null, headers), String.class);
    if (response.getStatusCode() == HttpStatus.OK) {
        // The grant access page should be returned
        assertTrue(response.getBody().contains("<h1>Application Authorization</h1>"));

        formData.clear();
        formData.add(DEFAULT_CSRF_COOKIE_NAME, IntegrationTestUtils.extractCookieCsrf(response.getBody()));
        formData.add(USER_OAUTH_APPROVAL, "true");
        formData.add("scope.0", "scope." + CFID);
        result = serverRunning.postForResponse("/oauth/authorize", headers, formData);
        assertEquals(HttpStatus.FOUND, result.getStatusCode());
        location = result.getHeaders().getLocation().toString();
    } else {
        // Token cached so no need for second approval
        assertEquals(HttpStatus.FOUND, response.getStatusCode());
        location = response.getHeaders().getLocation().toString();
    }
    assertTrue("Wrong location: " + location, location.matches("http://anywhere.com" + ".*code=.+"));

    formData.clear();
    formData.add("client_id", clientId);
    formData.add("redirect_uri", "http://anywhere.com");
    formData.add("grant_type", "authorization_code");
    formData.add("code", location.split("code=")[1].split("&")[0]);
    HttpHeaders tokenHeaders = new HttpHeaders();
    tokenHeaders.set("Authorization", testAccounts.getAuthorizationHeader(clientId, clientSecret));
    @SuppressWarnings("rawtypes")
    ResponseEntity<Map> tokenResponse = serverRunning.postForMap("/oauth/token", formData, tokenHeaders);
    assertEquals(HttpStatus.OK, tokenResponse.getStatusCode());
    @SuppressWarnings("unchecked")
    OAuth2AccessToken accessToken = DefaultOAuth2AccessToken.valueOf(tokenResponse.getBody());
    return accessToken;
}

From source file:org.cloudfoundry.identity.uaa.integration.util.IntegrationTestUtils.java

public static UserInfoResponse getUserInfo(String url, String token) throws URISyntaxException {
    RestTemplate rest = new RestTemplate(createRequestFactory(true));
    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
    headers.add(AUTHORIZATION, "Bearer " + token);
    headers.add(ACCEPT, APPLICATION_JSON_VALUE);
    RequestEntity<Void> request = new RequestEntity<>(headers, HttpMethod.GET, new URI(url + "/userinfo"));
    return rest.exchange(request, UserInfoResponse.class).getBody();
}

From source file:org.cloudfoundry.identity.uaa.integration.util.IntegrationTestUtils.java

public static void deleteZone(String baseUrl, String id, String adminToken) throws URISyntaxException {
    RestTemplate rest = new RestTemplate(createRequestFactory(true));
    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
    headers.add(AUTHORIZATION, "Bearer " + adminToken);
    headers.add(ACCEPT, APPLICATION_JSON_VALUE);
    RequestEntity<Void> request = new RequestEntity<>(headers, HttpMethod.DELETE,
            new URI(baseUrl + "/identity-zones/" + id));
    rest.exchange(request, Void.class);
}

From source file:org.cloudfoundry.identity.uaa.integration.util.IntegrationTestUtils.java

public static ScimUser updateUser(String token, String url, ScimUser user) {
    RestTemplate template = new RestTemplate();
    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
    headers.add("Accept", APPLICATION_JSON_VALUE);
    headers.add("Authorization", "bearer " + token);
    headers.add("Content-Type", APPLICATION_JSON_VALUE);
    headers.add("If-Match", String.valueOf(user.getVersion()));
    HttpEntity getHeaders = new HttpEntity(user, headers);
    ResponseEntity<ScimUser> userInfoGet = template.exchange(url + "/Users/" + user.getId(), HttpMethod.PUT,
            getHeaders, ScimUser.class);
    if (userInfoGet.getStatusCode() == HttpStatus.OK) {
        return userInfoGet.getBody();
    }/*  w  w  w  .  ja va 2 s . c  o  m*/
    throw new RuntimeException("Invalid return code:" + userInfoGet.getStatusCode());
}

From source file:org.cloudfoundry.identity.uaa.integration.util.IntegrationTestUtils.java

public static ScimUser getUserByZone(String token, String url, String subdomain, String username) {
    RestTemplate template = new RestTemplate();
    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
    headers.add("Accept", APPLICATION_JSON_VALUE);
    headers.add("Authorization", "bearer " + token);
    headers.add("Content-Type", APPLICATION_JSON_VALUE);
    headers.add("X-Identity-Zone-Subdomain", subdomain);
    HttpEntity getHeaders = new HttpEntity(headers);
    ResponseEntity<String> userInfoGet = template.exchange(
            url + "/Users" + "?filter=userName eq \"" + username + "\"", HttpMethod.GET, getHeaders,
            String.class);
    ScimUser user = null;/*  ww  w.j a  v a2  s . c  o  m*/
    if (userInfoGet.getStatusCode() == HttpStatus.OK) {

        SearchResults<ScimUser> results = JsonUtils.readValue(userInfoGet.getBody(), SearchResults.class);
        List<ScimUser> resources = (List) results.getResources();
        if (resources.size() < 1) {
            return null;
        }
        user = JsonUtils.readValue(JsonUtils.writeValueAsString(resources.get(0)), ScimUser.class);
    }
    return user;
}

From source file:org.cloudfoundry.identity.uaa.integration.util.IntegrationTestUtils.java

public static ScimUser getUser(String token, String url, String userId) {
    RestTemplate template = new RestTemplate();
    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
    headers.add("Accept", APPLICATION_JSON_VALUE);
    headers.add("Authorization", "bearer " + token);
    headers.add("Content-Type", APPLICATION_JSON_VALUE);
    HttpEntity getHeaders = new HttpEntity(headers);
    ResponseEntity<ScimUser> userInfoGet = template.exchange(url + "/Users/" + userId, HttpMethod.GET,
            getHeaders, ScimUser.class);
    if (userInfoGet.getStatusCode() == HttpStatus.OK) {
        return userInfoGet.getBody();
    }/*from  www.  j a  va  2  s.  co  m*/
    throw new RuntimeException("Invalid return code:" + userInfoGet.getStatusCode());
}

From source file:org.cloudfoundry.identity.uaa.integration.util.IntegrationTestUtils.java

public static String getUserIdByField(String token, String url, String origin, String field,
        String fieldValue) {//from  www.j  a  v a 2  s .  co m
    RestTemplate template = new RestTemplate();
    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
    headers.add("Accept", APPLICATION_JSON_VALUE);
    headers.add("Authorization", "bearer " + token);
    headers.add("Content-Type", APPLICATION_JSON_VALUE);
    HttpEntity getHeaders = new HttpEntity(headers);
    ResponseEntity<String> userInfoGet = template.exchange(url + "/Users" + "?attributes=id" + "&filter="
            + field + " eq \"" + fieldValue + "\" and origin eq \"" + origin + "\"", HttpMethod.GET, getHeaders,
            String.class);
    if (userInfoGet.getStatusCode() == HttpStatus.OK) {

        HashMap results = JsonUtils.readValue(userInfoGet.getBody(), HashMap.class);
        List resources = (List) results.get("resources");
        if (resources.size() < 1) {
            return null;
        }
        HashMap resource = (HashMap) resources.get(0);
        return (String) resource.get("id");
    }
    throw new RuntimeException("Invalid return code:" + userInfoGet.getStatusCode());
}