Статус HTTP - 401 не авторизован - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь преобразовать код curl в java с намерением вызвать API для создания токена, но я получаю ответ 401.

Код Curl:

curl -X POST \
  https://apigw.dev/commercial/oauth/create-token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'client_id=dfdfdfdfd&client_secret=dfdfdf&grant_type=client_credentials'

А вот мой java код:

@RestController
public class TokenController {

    @RequestMapping(value = "/getAccessToken", method = RequestMethod.POST)
    public ClientCredentialsResourceDetails getAccessToken(ClientCredentialsResourceDetails resource) throws Exception {

        resource.setAccessTokenUri(tokenUri);
        resource.setClientId(clientId);
        resource.setClientSecret(clientSecret);
        resource.setGrantType("client_credentials");
        resource.setClientAuthenticationScheme(AuthenticationScheme.header);
        resource.setScope(Arrays.asList("read", "write"));

        System.out.println(resource);

        return resource;
    }
}

и вот результаты:

    "timestamp": "2020-04-28T14:02:28.381+0000",
    "status": 401,
    "error": "Unauthorized",
    "message": "Unauthorized",
    "path": "/getAccessToken"
}

Я очень ценю ваше предложение, Заранее спасибо.

1 Ответ

0 голосов
/ 28 апреля 2020

Вы делаете запрос POST с CURL, но ваш контроллер покоя настроен как GET. Я полагаю, у вас есть другая конечная точка для / getAccessToken с методом POST, для которой требуется токен. Кроме того, по умолчанию каждый метод в классе @RestController потребляет application/json и производит application/json. Если ваш запрос Content-Type: application/x-www-form-urlencoded, измените тип потребления вашего запроса на MediaType.APPLICATION_FORM_URLENCODED_VALUE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...