Простое клиентское приложение OAuth2 с типом предоставления client_credentialsJAVA

Программисты JAVA общаются здесь
Anonymous
Простое клиентское приложение OAuth2 с типом предоставления client_credentials

Сообщение Anonymous »

У меня есть простой вариант использования.
Из моего приложения весенней загрузки я хочу вызвать API-интерфейс rest, который защищен OAuth2 (тип гранта — client_credentials)
Я никогда раньше не работал с OAuth.
Я пробовал проверять примеры в Spring-Docs и других местах (для себя ошибка чата, который был неправильным).
Теперь я просто не понимаю, какое решение является правильным.
Может кто-нибудь привести мне пример или подтолкнуть к правильное направление к правильной реализации.
Мой код на данный момент:
application.properties

Код: Выделить всё

spring.application.name=oauth-test

spring.security.oauth2.client.registration.myuser.client-id=userId
spring.security.oauth2.client.registration.myuser.client-secret=userPassword
spring.security.oauth2.client.registration.myuser.authorization-grant-type=client_credentials
spring.security.oauth2.client.registration.myuser.scope=read
spring.security.oauth2.client.provider.myuser.token-uri=https://auth-server-app/v1/oauth/token
Контроллер:

Код: Выделить всё

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class ApiController {

@Autowired
private OAuth2AuthorizedClientService authorizedClientService;

@GetMapping("/api/protected-data")
public ResponseEntity getProtectedData() {
OAuth2AuthorizedClient client = authorizedClientService.loadAuthorizedClient("myuser", "userId");
String accessToken = client.getAccessToken().getTokenValue();

HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + accessToken);
HttpEntity entity = new HttpEntity(headers);
ResponseEntity response = restTemplate.exchange("https://my-resource-server/v1/resource/1", HttpMethod.GET, entity, String.class);

return ResponseEntity.ok("Protected data retrieved successfully!");
}
}
Но когда я начну вызывать конечную точку, просто посмотрите:
Изображение

Изменить:
URL токена ожидает учетные данные в теле запроса.

Подробнее здесь: https://stackoverflow.com/questions/784 ... grant-type

Вернуться в «JAVA»