인프런 커뮤니티 질문&답변

강인성님의 프로필 이미지
강인성

작성한 질문수

스프링 시큐리티 OAuth2

초기화 과정 이해 - OAuth2AuthorizationServerConfigurer

OAuth2AuthorizationServerConfigurer 질문 있습니다.

해결된 질문

작성

·

215

·

수정됨

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를 활용하는 방법이 있는지 궁금합니다.

강인성님의 프로필 이미지
강인성

작성한 질문수

질문하기