Showing posts with label X-Auth-Token. Show all posts
Showing posts with label X-Auth-Token. Show all posts

Saturday, April 23, 2016

How to create a client for 'X-Auth-Token' authentication over Spring Security implementation on a Rest Service?

I am building an application for practicing an architecture and its balance, I have to create a client for testing purpose, the rest service use tokens for authentication implementing Spring Security that employs: authentication-manager, security http, AuthenticationTokenProcessingFilter, intercept-url and tokens, so after some reading I have to resolve 'X-Auth-Token' inject on headers and authentication part, the following lines are for testing this king of Authentication:

package org.osanchezh.keepnotes.soa.app.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import org.osanchezh.keepnotes.soa.integration.transfer.TokenTransfer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.ResourceAccessException;
import org.springframework.web.client.RestTemplate;
public class SecurityNewsEntryRestTest {
public static final String URL = "http://localhost:8081/my-app/rest/news";
public static final String URL_SECURITY = "http://localhost:8081/my-app/rest/user/authenticate";
private static final Logger LOGGER = LoggerFactory.getLogger(SecurityNewsEntryRestTest.class);
@Test
public void testLoginRestService(){
try{
RestTemplate restTemplate = new RestTemplate();
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("username", "admin");
map.add("password", "admin");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(new MappingJacksonHttpMessageConverter());
messageConverters.add(new FormHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);
TokenTransfer tokenTransfer = restTemplate.postForObject(URL_SECURITY, request, TokenTransfer.class);
String token1=tokenTransfer.getToken();
LOGGER.debug("token="+token1);
RestTemplate restTemplate1 = new RestTemplate();
HttpHeaders headers1= new HttpHeaders();
headers1.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
headers1.add("X-Auth-Token", token1);
HttpEntity<String> entity1 = new HttpEntity<String>("request", headers1);
ResponseEntity<String> result1 = restTemplate1.exchange(URL, HttpMethod.GET, entity1 ,String.class);
LOGGER.debug("RESULTADO="+result1.getBody());
}catch(ResourceAccessException ex){
LOGGER.error(ex.getMessage(),ex);
}
}
}
}
By now we have a client for test authentication and authorization for next steps.

Best regards,