web-dev-qa-db-fra.com

Jeton porteur d'autorisation dans HttpClient?

J'essaie d'accéder à une API à l'aide d'un jeton d'autorisation oauth2 en Java. Le code client est

DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpPost post = new HttpPost(http://res-api");
post.setHeader("Content-Type","application/json");
post.setHeader("Authorization", "Bearer " + finalToken);

JSONObject json = new JSONObject();
// json.put ...
// Send it as request body in the post request 

StringEntity params = new StringEntity(json.toString());
post.setEntity(params);

HttpResponse response = httpclient.execute(post);
httpclient.getConnectionManager().shutdown();

Cela retourne un 401.

Une commande curl équivalente fonctionne sans problème avec le même jeton:

curl -H "Content-Type:application/json" -H "Authorization:Bearer randomToken" -X POST -d @example.json http://rest-api

J'ai essayé de déconnecter la demande et il semble que l'autorisation est définie correctement

DEBUG [2016-06-28 20:51:13,655] org.Apache.http.headers: >> Authorization: Bearer authRandomToKen; Path=/; Domain=oauth2-server; Expires=Wed, 29 Jun 2016 20:51:13 UTC

J'ai essayé la commande curl en copiant-collant ce même jeton et t fonctionne bien

Bien que je voie aussi cette ligne

DEBUG [2016-06-28 20:51:13,658] org.Apache.http.impl.client.DefaultHttpClient: Response contains no authentication challenges
7
user_mda

J'essayais de passer un appel HTTP en utilisant Java, je voulais transmettre le jeton porteur OAuth2.0. J'ai pu le faire de la manière suivante, j'espère que cela aidera les autres.

import Java.io.BufferedReader;
import Java.io.InputStreamReader;
import Java.net.HttpURLConnection;
import Java.net.URL;

public class HttpURLConnectionExample {


    public static void main(String[] args) throws Exception {

        // Sending get request
        URL url = new URL("http://example-url");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        conn.setRequestProperty("Authorization","Bearer "+" Actual bearer token issued by provider.");
        //e.g. bearer token= eyJhbGciOiXXXzUxMiJ9.eyJzdWIiOiPyc2hhcm1hQHBsdW1zbGljZS5jb206OjE6OjkwIiwiZXhwIjoxNTM3MzQyNTIxLCJpYXQiOjE1MzY3Mzc3MjF9.O33zP2l_0eDNfcqSQz29jUGJC-_THYsXllrmkFnk85dNRbAw66dyEKBP5dVcFUuNTA8zhA83kk3Y41_qZYx43T

        conn.setRequestProperty("Content-Type","application/json");
        conn.setRequestMethod("GET");


        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String output;

        StringBuffer response = new StringBuffer();
        while ((output = in.readLine()) != null) {
            response.append(output);
        }

        in.close();
        // printing result from response
        System.out.println("Response:-" + response.toString());

    }
}
1
Red Boy