Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
HTTP headers added to OAuthClientRequest are not sent with the HTTP request.
I would like to use HTTP Basic authentication at the token endpoint.
So on the client side I add "Authorization" HTTP header to OAuthClientRequest calling its setHeader() method.
But headers set on the OAuthClientRequest object are not processed by OAuthClient.accessToken() / URLConnectionClient.execute(), therefore they are not sent to the authorization server.
Or is there any other way to use HTTP Basic authentication between the client and the token endpoint of the authorization server?
The client code:
OAuthClientRequest tokenRequest = OAuthClientRequest .tokenLocation("https://...") .setGrantType(GrantType.AUTHORIZATION_CODE) .setClientId("...") .setClientSecret("...") .setRedirectURI("https://...") .setCode(authzCode) .buildBodyMessage(); if (tokenRequest.getHeaders() == null) { tokenRequest.setHeaders(new HashMap<String, String>()); // nice-to-have issue: it should be initialized inside OAuthClientRequest at creation time or at first call of setHeader() } tokenRequest.setHeader("Authorization", "..."); // main issue: header never used later OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient()); OAuthJSONAccessTokenResponse tokenResponse = oAuthClient.accessToken(tokenRequest);