마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드/서버 통신시 인증, access token 혹은 oauth에 대하여 질문 있습니다.

+1 추천
안녕하세요.

안드로이드펍 덕분에 열심히 개발하고 있는 개발자입니다.

안드로이드 네이티브 앱을 제작 중인데, 서버 통신(apm) 관련하여 여쭤볼 것이 있습니다.

 

현재 앱 제작시 통신 모듈은 volley를 사용하고 있습니다.

유저 핸드폰 번호와 이름으로 회원 가입을 진행하고 있습니다.(이게 유니크한 키는 아닙니다.)

 

예를들어 서버에 http://도메인.com/api/user/ 라는 주소로 안드로이드에서 호출 할 수 있습니다.

post형태로 개인의 휴대폰 번호를 보내고, 만약 db에 그 정보가 있다면 json형태로 돌려 주려고 합니다.

 

여기서 문제점이, 어디서든 post형태로 휴대폰 번호를 넘겨주면, 개인 정보 확인이 가능하게 되는 것이 문제입니다.

이것을 방지하기 위해, oauth를 사용하는 것이 맞나요 ?

 

혹시  oauth 사용이 부담스러울 경우, 보통 어떤 형태로 제작하는 지 궁금합니다.

 

제 생각에는 android device id와 핸드폰 번호를 적히 활용하는 방안을 생각 중입니다.

 

안드로이드에서 서버로 3개의 값을 보냅니다.

1. access  token  :  device id, 핸드폰 번호, 오늘의 날짜(Y-m-d)를 합하여 만든 암호화 키

2. device id

3. 핸드폰 번호

그러면 이 정보를 갖고 서버에서 받은 device id, 핸드폰번호, 서버의 날짜를 조합하여 , 서버 자체적으로 access token을 구하여, post로 받은 1번의 access token과 비교하여 일치하다면 회원으로 인정하고자 합니다.

이렇게 하면 되나요 ?

 

그리고 이렇게 한다고 했을 때 , 매번 정보를 불러 올 때 마다 이런 형태로 인증을 취해야 하나요 ?

인증을 유지 하는 방법(웹 상에서는 세션이나 쿠키)은 안드로이드에서 권고하지 않는 것 같아서요..

 

질문이 길었지만 읽어주셔서 감사드립니다.

조언 부탁드리겠습니다!!
빠영 님이 2015년 2월 4일 질문

1개의 답변

+1 추천
저도 어플에서 rest서비스에 접근하기위해 비슷한 고민 한적있는데요,

저 같은 경우에는 초기인증서비스를 추가로 만들어

어플 기동시 현재시간 디바이스id를 어플에 내장된 디펄트키로 암호화해 초기인증키를 서버로 날리고

서버에서도 디펄트키로 요청 http로부터 넘어온 인증키와 비교후 서버에서 새로운 접속키를 만들어 암호화후

서버 DB에 저장 및 해당 디바이스로 response 해주었습니다.

디바이스에서는 넘어온 접속키를 내부에 저장시킨후

다음 http요청 부터는 해당 접속키를 이용해 요청 하도록 했습니다.

접속키의 암호화키는 마지막 http 요청시간으로 했구요,

복잡한 내용인지라 설명이 잘 안되네요,, 여튼 결론은 일단 매번 요청시마다 인증을 취해야합니다.
익명사용자 님이 2015년 2월 4일 답변
답변 감사합니다! 한가지만 더 여쭤볼게요.
결론에서, 매번 요청시 마다 인증을 취해야 한다는 것이,

어플 실행시 마다 인증을 하느 것이 아니라,
유저가 어플을 사용 하는 동안, 인증이 필요한 부분이라면 매번 인증을 해야 한다는 말씀이시죠 ?

그런데, 소규모의 앱에서는 부담이 없겠지만, 인원이 3~40만명 정도 된다면 부하가 걸리 것 같아서요 이건 서버에서 해결해야 할 문제일 뿐, 안드로이드에서는 관계가 없나요 ?

안드로이드에서도 매번 인증을 한다면, 인증 시간동안 대기해야하는 불편함이 있을 것 같아서요
...