Я могу получить токен доступа oauth, и я могу использовать его, если я запускаю свое приложение Springboot ЛОКАЛЬНО. Однако, когда я загружаю его на сервер нашей компании, я все равно могу получить токен, но когда я пытаюсь его использовать, я получаю ошибку 401. Есть что-то еще, что нужно настроить?
Я ссылаюсь на этот урок (в частности, на примере [vanilla]):
https://github.com/spring-projects/spring-security-oauth/tree/master/tests/annotation
Используя этот код,
URL url = new URL("https://www.myserver.com/project/oauth/token?grant_type=client_credentials");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.addRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString("my-client-with-secret:secret".getBytes()));
Мне удалось получить токен доступа:
{"access_token":"xxxx-xxxxx-xxxxxx-xxxxxx","token_type":"bearer","expires_in":41805,"scope":"read write"}
Но когда я пытаюсь использовать это:
URL url = new URL("https://www.myserver.com/project/api/stuff");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.addRequestProperty("Content-Type", "application/json; charset=UTF-8");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("Authorization", "Bearer " + token);
Я получаю ошибку:
{"error":"invalid_token","error_description":"Invalid access token: xxxx-xxxxx-xxxxxx-xxxxxx"}
Я также посмотрел на этот вопрос:
Oauth2: недопустимый токен доступа
но мой работает локально.
Дополнительная информация:
По какой-то причине сервер использует «OAuth2AuthenticationProcessingFilter»
но локально он использует «BasicAuthenticationFilter»
Сервер:
/oauth/token?grant_type=client_credentials at position 5 of 11 in additional filter chain; firing Filter: 'OAuth2AuthenticationProcessingFilter'
Token not found in headers. Trying request parameters.
Token not found in request parameters. Not an OAuth2 request.
Местное время:
/oauth/token?grant_type=client_credentials at position 5 of 11 in additional filter chain; firing Filter: 'BasicAuthenticationFilter'
Basic Authentication Authorization header found for user 'my-client-with-secret'