가장 최신 릴리즈 sdk 사용중입니다.
카카오 및 타플랫폼의 로그인 연동을 진행중에 있는데요,
기존에 REST api 사용 시, authorization_code(인가코드)를 통한 권한 체크 및 token발급 → user resource 발급을
저희 개별 auth 서버에서 진행중이었습니다.
ios sdk 사용 시, 최종 결과물이 access_token 인 것을 확인했습니다.
access_token 을 앱(프론트엔드)으로 부터 입력 받은 뒤 토큰으로 리소스를 get할 수 있겠으나,
해당 토큰이 저희 플랫폼을 이용하며 발급받은 토큰이라는 것을 검증하는 플로우가 있어야
안전하게 (회원가입) 로그인 프로세스를 처리할 수 있을 것 같은데요,
- ios sdk 활용 시 인가코드를 발급받는 플로우를 진행 할 수 있나요?
- 없다면 해당 토큰이 카카오의 클라이언트 중 등록 된 저희 서비스에서 발급한 토큰이라는 점을 검증할 수 있는 방안이 있나요?
안녕하세요.
없습니다. SDK에서는 접근토큰 발급까지 이루어 집니다.
iOS SDK를 통해 API를 사용할 때, 디벨로퍼스에 설정하신 iOS플랫폼 정보(번들ID)를 체크 합니다.
때문에 배포하신 앱에서 발급받은 토큰임이 증명됩니다.
iOS SDK를 통해 API를 사용할 때, 디벨로퍼스에 설정하신 iOS플랫폼 정보(번들ID)를 체크 합니다.
때문에 배포하신 앱에서 발급받은 토큰임이 증명됩니다.
앱에서 발급받은 토큰을 통해 사용자정보 get
(카카오측의 /users/me
)
및 저희 서비스 로그인(회원가입)
처리하는 endpoint를 저희 auth 서버에서 제공한다고 했을 때,
다른 앱을 사용하여 생성한 토큰을 통해서도 저희 auth서버 → 카카오 리소스서버
로의 요청은 허용되는 상태이지 않나용?
다른 앱에서 접근토큰을 발급 받아 서버로 전송하는 것은 어려울 것 같습니다.
발급 받으려면 디벨로퍼스에서 해당 앱의 플랫폼 정보에 설정한 번들 ID를 사용해야 하는데
이렇게 설정해서 앱스토어에 올릴수 없을것 같습니다.
아 저희 앱이 다른 앱의 설정으로 발급받는다는 말이 아니었습니다.
질문을 정리해서 다시 올립니다.
대상: 프론트앤드 ios 앱 A, 저희 플랫폼 auth 서버 B, 카카오 C
1-1. A에서 sdk 활용하여 접근토큰 발급
1-2. B로 카카오의 접근토큰 매개변수로 인증요청
1-3. B에서 접근토큰 활용하여 C로 사용자 정보 요청 및 자체 인증처리
1-2 단계에서 어떤 방식으로든 제 3자가 토큰 갈취하여 요청 혹은 다른 앱에서 발급한 접근코드로 B로의 인증요청 시,
결국 1-3 단계에서 C는 항상 유저정보를 리턴하는 형태로 예상됩니다.
(rfc에 따르면 접근 토큰 자체가 권한 통과가 완료되어 있는 토큰이므로)
이 경우 저희 auth서버에서 우리 플랫폼을 사용해 발급한 토큰이라는 점을 저희도 검증해야할 것 같은
생각이 들어 문의해보았습니다.
자세한 설명 감사 드립니다.
어떠한 방식으로든 접근 토큰 탈취 시,
탈취가 되더라도 이를 제 3자가 마음대로 사용할 수 없도록 하는것이 중요할텐데요
이를 방어하기 위해 REST-API 사용 시, 허용 IP 주소 기능을 제공하고 있습니다.
빠른 답변 감사합니다
그렇다면 다른곳에서 발급한 토큰이라도 허용된 ip에서만 accept 가능한 상태가 되는건가요?
(접근토큰과 허용 ip가 어떤 형태로든 연결이 되어 검증한 상태가 되는 건가요?)
우선 처음 답변 드린 것 처럼 다른곳에서 토큰 발급은 어려울것 같습니다.
(등록된 번들ID만 사용가능)
접근토큰과 허용IP는 직접적인 관계가 없습니다.
탈취된 토큰이 다른 서비스에서 사용될 수 없도록 허용IP주소(REST-API를 사용할 수 있는 화이트리스트)를 관리 합니다.