해결된 질문
작성
·
208
·
수정됨
0
ProviderSettings를 통해 기존의 토큰 요청 uri을 변경하는 법은 숙지했으나 token endpoint uri를 여러개 설정하는 방법이 있는지 궁금합니다.
ex ) /oauth2/token
/get-token
....
답변 2
1
token end point 를 여러개 설정해야 할 이유가 있을까요?
인가서버 입장에서는 한개의 채널로만 토큰을 발행하도록 되어 있습니다.
이건 API 설계와 관련된 부분으로 여러개의 토큰 엔드포인트를 두는 것이 맞는지 부터 생각해 볼 문제인 것 같습니다
일단 설정에서 여러개 둘 수 있는 방법을 확인해 봐야 겠지만 저도 잘은 모르겠습니다.
0
@RestController
@RequiredArgsConstructor
public class CustomTokenEndpointController {
@PostMapping("/api/v1/get-token")
public ResponseEntity<?> getToken(HttpServletRequest request) {
String authorization = request.getHeader("Authorization");
String basic = authorization.replace("Basic ", "");
byte[] decode = Base64.getDecoder().decode(basic);
String decodeString = new String(decode);
String[] clientInfo = decodeString.split(":");
// OAuth 2.0 토큰 요청을 위한 요청 매개변수 구성
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType(request.getContentType()));
headers.setBasicAuth(clientInfo[0], clientInfo[1]);
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("grant_type", request.getParameter("grant_type"));
HttpEntity<MultiValueMap<String, String>> request2 = new HttpEntity<>(params, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response2 = restTemplate.postForEntity("http://localhost:27001/oauth2/token", request2, String.class);
return ResponseEntity.ok(response2.getBody());
}
}
위와 같은 방법으로 가능은 한데, Security를 활용하는 방법이 있는지 궁금합니다.