답변 감사합니다! 그런데 아직 궁금증이 완벽하게 해결되지 않아서 추가 질문 좀 드리겠습니다 ㅠㅠ
저는 지금 스프링 부트 서버를 두고 ios에서 이 서버로 api 요청을 보내도록 구성했습니다.
그래서 스프링 부트 서버에서 요청을 보내는 사용자를 식별하기 위해서 스프링 부트 서버에서 생성한 access token과 refresh token을 사용하려고 합니다.
이러려면 서버에서 인가 코드나 카카오에서 발급한 access tokon을 통한 인증이 이루어져야 하지 않나요?
만약 ios에서 조회한 사용자 정보를 서버에게 넘겨준다면 서버에서는 이 요청을 보낸 유저가 진짜 유저라는 것을 어떻게 식별할 수 있을까요?
넵 맞습니다! 제 설명이 부족했던 것 같네요
스프링 부트에서 자체적으로 access token과 refresh token을 만들어서 ios에게 주고 이 access token과 refresh token을 통해 인증, 인가를 구현하려고 합니다.
가장 쉬운 방법은 서버 자체적으로 로그인, 회원 가입 로직을 작성하는 것이겠지만 저는 소셜 로그인을 사용하고 싶어서요.
그래서 ios에서 카카오를 통한 사용자 인증을 마치면 서버 자체적으로 생성한 access token과 refresh token을 ios에게 반환하고 싶어요.
그래서 제가 처음 생각했던 방식이 "카카오에서 생성해 준 access token"을 ios에서 제 서버로 넘겨주면 서버에서 이를 검증하고 유저 정보를 받아와서 데이터베이스를 뒤져봅니다.
만약 데이터베이스에 해당 유저 정보가 있다면 서버 자체적으로 생성한 access token과 refresh token을 직접 생성해서 넘겨주고 없다면 데이터베이스에 유저 정보를 저장하고 서버 자체적으로 생성한 access token과 refresh token을 넘겨줍니다.
그런데 본문에 적혀있듯이 access token이 탈취당하면 위험할 것 같아서 다른 대안을 찾아보던 중이었습니다.
즉 카카오로 통한 인증을 진행하는 상황은 “첫 로그인” 혹은 “서버 자체적으로 생성한 refresh token이 만료되었을 때”
이 두 가지 상황이 될테고요 나머지는 서버 자체적으로 생성한 access token과 refresh token을 통해 인증을 진행하려고 합니다.
지금으로서는 카카오에서 만들어준 access token을 서버에게 넘겨주는 방법밖에 떠오르지 않네요…
더 좋은 대안이 있다면 추천해주시면 감사하겠습니다!
스프링 부트에서 자체적으로 access token과 refresh token을 만들어서 ios에게 주고 이 access token과 refresh token을 통해 인증, 인가를 구현하려고 합니다.
이렇게 하면 어떨까요?
여전히 네이티브앱에서는 카카오SDK로 카카오와 교신을 일임하고
[앱에서 카카오 로그인으로 회원가입 시, ]
(1) 스프링 부트 서버에서 토큰 발급
(2) SDK로 카카오 로그인 및 사용자 정보조회 (로그인 과정에 동의창 동의 포함)
(3) 스프링 부트 서버에서 받은 토큰과 암호화된 사용자 정보를 서버에 전달
(4) 서버에서는 자체 토큰 유효성 검증
(5) 앱에서 받은 사용자 정보 중 카카오 로그인 id항목으로 기가입 유저인지 판단
(5-1) 신규가입이면 회원정보 저장
(5-2) 기가입자면 로그인 처리
카카오의 액세스토큰은 서버가 알 필요 없고
스프링부트 서버는 자체 토큰만 검증하면 좋을 것같습니다.