클라이언트와 서버간의 인가코드 전달 관련 문의드립니다

안녕하세요!
해당 글에 대한 상세한 답변을 관련해서 궁금한 부분을 여쭤보고자 합니다!

즉, 인가코드를 브라우저에 한번 들렸다가 백엔드로 전달하는 것은 서비스 측 요구사항에 따라 그렇게 구현할 수도 있겠지만 일반적으로 권장드리지 않습니다

웹의 경우는 모든 책임을 서버쪽에 주어서 토큰을 redirect시에 쿠키에 담아서 전송하는 부분을 권장하시는 걸로 알고있습니다.

서버 작업자와 클라이언트 작업자가 서로 다르고 작업 공간이 다른 경우, 로컬 서버를 직접 제공하지 않고 서버 쪽에서 실제 도메인을 만들어 미리 띄운 서버에서 클라이언트가 API를 테스트하는 과정에서 쿠키 방식으로는 생각보다 번거로운 작업이 많이 생깁니다. 따라서 아래와 같이 작업한다면 서비스 측 요구사항에 따라 구현했다고 볼 수 있을까요?
예) api.xxxx.com (서버)와 localhost:8080 (클라이언트)

작업 절차

  1. /oauth/authorize를 통해 인가 코드를 부여받은 후, 리디렉트 URI를 클라이언트로 가져옵니다.
  2. 클라이언트는 이 코드를 서버(백엔드)로 전송합니다.
  3. 서버(백엔드)는 /oauth/token으로 요청을 보내 토큰을 받습니다.
  4. 사용자 정보를 토대로 자체적인 jwt 토큰을 생성한다
  5. 서버(백엔드)는 자체적으로 만든 jwt 토큰을 담아서 responseBody에 담아 클라이언트에 반환합니다.

이렇게 작업을 진행하면 JSON 데이터를 활용해 인증을 처리하기 더 쉬울 것 같은데, 이로 인해 발생할 수 있는 가장 큰 문제가 무엇일까요?

안녕하세요.

아래 유사문의에 대한 답변 참고 부탁드려요.

카카오 소셜 로그인 rest api 설정에 관한 질문 - tim.l 님의 게시물 #2


이렇게 작업을 진행하면 JSON 데이터를 활용해 인증을 처리하기 더 쉬울 것 같은데, 이로 인해 발생할 수 있는 가장 큰 문제가 무엇일까요?

백엔드에 일임하도록 하는 것은 보안상 발생할 수 있는 문제를 최소화하기 위함이나,
고객정보 입력 받아 가입하는 일반 회원가입과 같이 민감정보가 반드시 프론트와 교신해야하는 경우도 있으니 암호화, https통신, PKCE와 같이 적절한 보완책만 있으면 됩니다.

인가코드가 탈취되어도 액세스 토큰 발급 할 수 없도록 허용 IP 주소 등록 하시면 좋을 것 같습니다.