강의

멘토링

로드맵

Inflearn Community Q&A

trombonez6398's profile image
trombonez6398

asked

Spring Security OAuth2

Understanding the Initialization Process - OAuth2AuthorizationServerConfigurer

OAuth2AuthorizationServerConfigurer 질문 있습니다.

Resolved

Written on

·

309

·

Edited

0

ProviderSettings를 통해 기존의 토큰 요청 uri을 변경하는 법은 숙지했으나 token endpoint uri를 여러개 설정하는 방법이 있는지 궁금합니다.

ex ) /oauth2/token

/get-token

....

javaspringspring-bootoauth

Quiz

Spring 인가 서버 설정 시, `OAuth2AuthorizationServerConfiguration` 클래스의 주된 역할은 무엇일까요?

클라이언트 애플리케이션의 사용자 인증을 처리

인가 서버의 핵심 구성 요소를 설정하고 SecurityFilterChain을 정의

리소스 서버가 액세스 토큰을 검증하도록 지원

사용자의 개인 정보 제공 여부를 관리

Answer 2

1

leaven님의 프로필 이미지
leaven
Instructor

token end point 를 여러개 설정해야 할 이유가 있을까요?

인가서버 입장에서는 한개의 채널로만 토큰을 발행하도록 되어 있습니다.

이건 API 설계와 관련된 부분으로 여러개의 토큰 엔드포인트를 두는 것이 맞는지 부터 생각해 볼 문제인 것 같습니다

일단 설정에서 여러개 둘 수 있는 방법을 확인해 봐야 겠지만 저도 잘은 모르겠습니다.

0

trombonez6398님의 프로필 이미지
trombonez6398
Questioner

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

trombonez6398's profile image
trombonez6398

asked

Ask a question