Le printemps Reste Modèle avec OAUTH

Mon contrôleur de couche est enveloppée avec le printemps oauth2. Je suis en train d'écrire un test d'intégration pour tester les appels d'api de contrôleur, j'ai donc décidé d'utiliser RestTemplate.

Suivantes sont commande que j'utilise via curl:

curl -v --cookie cookies.txt --cookie-jar cookies.txt  "http://localhost:8080/oauth/token?client_id=my-trusted-client&grant_type=password&scope=trust&username=xxxx&password=xxxxxx"

Il renvoie un jeton d'accès que j'utilise pour faire l'appel à l'api :

curl -v -H "Authorization: Bearer Access toekn value" "http://localhost:8080/profile/1.json"

Tout en utilisant RestTemplate, j'ai été en mesure d'obtenir le jeton d'accès, mais maintenant je veux passer ce jeton pour faire des appels de l'api:

DefaultHttpClient client = new DefaultHttpClient();
    HttpHeaders headers = new HttpHeaders();
    headers.set("Authorization: Bearer", accessToken);
    System.out.println(accessToken);
    HttpEntity<String> entity = new HttpEntity<String>(headers);
    System.out.println(restTemplate.exchange("http://localhost:8080/xxxx",HttpMethod.GET,entity,Object.class));

Cependant, j'ai cette erreur:

Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:75)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:486)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:443)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:377)
at com.gogii.service.SKUService.testGetAllSKU(SKUService.java:20)

Comment peut-on faire des appels authentifiés à l'aide de RestTemplate?

Alors, êtes-vous en passant "accessToken" à chaque REQUÊTE au serveur. Donc, je suppose que votre API REST est apatride et vous maintenir son état d'apatride par l'envoi d'accessToken à chaque fois. Est-ce une solution sécurisée? Êtes-vous de l'utiliser dans un environnement de production?

OriginalL'auteur harshit | 2011-11-01