작성
·
473
0
안녕하세요 선생님. 지금가지 선생님의 강의를 바탕으로 oauth 를 사용하는 프로젝트를 구축하는데 있어 궁금점이 생겨 질문드립니다.
소셜로그인 인증 챕터 부분에서는 전형적인 session 인증 방식인데 restful api 서버 개발시에는 어떻게 설정해야할까요? 대안으로 찾아본바 successHandler 를 커스텀하게 설정하여 jwt 로 암호화해서 서버 api로 리다이렉트 시 쿼리파라미터에 jwt를 넣어 프론트에게 jwt 를 전달하는데 이 방식이 맞나요?
또한 강의에서 restfual api 에 대해 다루신다면 어느 챕터에서 확인할 수 있을까요?
답변 1
1
네
해당 강의는 Spring Security OAuth2 강좌입니다.
OAuth2 는 클라이언트가 사용자를 대신해서 인가서버로부터 권한을 부여받아 api 서버로부터 특정한 자원을 요청하도록 하는 것이 주요 목적입니다.
소셜 로그인도 네이버나 구글로부터 클라이언트가 액세스 토큰을 발급받고 다시 사용자정보를 가지고 와서 인증처리까지 하면 OAuth2 의 흐름은 1차적으로 완료된 것입니다.
만약 OAuth2 에 의한 인증처리를 하고 이후의 인증 상태유지를 하는 것을 세션을 통해 할 것인지 아니면 JWT 와 같은 토큰 방식으로 할 것인지는 선택사항입니다.
즉 OAuth2 와는 직접적인 관련은 없습니다.
장대영 님께서 말씀하신 successHandler 에서 jwt 를 생성해서 응답 헤더에 담아 전달하고 클라이언트가 restful api 통신 시 jwt 를 서버에 보내어 토큰을 검증하고 인증상태를 계속 유지하는 개념은 OAuth2 와는 관련이 없고 JWT 를 연계하는 토큰인증 방식이라 할 수 있습니다
다만 참고하실 것은 본 강의의 섹션 중에서 10 ~ 15 섹션인 OAuth 2.0 Resource Server 가 있습니다.
이 섹션에서 OAuth2 로 사용자의 인증처리가 이루어진 후 jwt 를 서명 및 발급해서 클라이언트로 응답하고 다시 클라이언트가 jwt 를 요청 헤더에 담아 서버에 전달하는 식의 인증방식과 인가서버에서 발행한 jwt 토큰을 가지고 리소스 서버로 접근 및 특정자원을 얻기 위해서 거쳐야 하는 여러 방법들에 대해 설명하고 있습니다
OAuth2 를 통해 발급받은 토큰을 가지고 실제 리소스 서버가 아닌 클라이언트 서버사이드에서 활용하는 부분은 가급적 사용하는 것을 권하지 않는 것으로 알고 있습니다
본 강의는 스프링 시큐리티에서 구현한 OAuth2 표준 기술에 대한 내용을 전달하고 있습니다.
OAuth2 을 벗어난 JWT 자체적인, 독립적인 인증이나 권한을 다루는 것이 아닌 인가서버에서 발행한 JWT 토큰을 사용해서 리소스 서버와의 api 통신을 활용하는 방법에 대해 설명하고 있습니다