안드로이드 개발 질문/답변
(글 수 45,052)
C2DM과 GOOGLE계정 보안문제
안녕하세요. 질문글을 하나 올립니다.
도움말씀 부탁드립니다.
public String getAuthToken() throws Exception{
String authtoken = "";
StringBuffer postDataBuilder = new StringBuffer();
postDataBuilder.append("accountType=HOSTED_OR_GOOGLE"); //똑같이 써주셔야 합니다.
postDataBuilder.append("&Email=이메일"); //개발자 구글 id
postDataBuilder.append("&Passwd=패스워드"); //개발자 구글 비빌번호
postDataBuilder.append("&service=ac2dm");
postDataBuilder.append("&source=test-1.0");
byte[] postData = postDataBuilder.toString().getBytes("UTF8");
URL url = new URL("https://www.google.com/accounts/ClientLogin);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", Integer.toString(postData.length));
OutputStream out = conn.getOutputStream();
out.write(postData);
out.close();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String sidLine = br.readLine();
String lsidLine = br.readLine();
String authLine = br.readLine();
System.out.println("sidLine----------->>>"+sidLine);
System.out.println("lsidLine----------->>>"+lsidLine);
System.out.println("authLine----------->>>"+authLine);
System.out.println("AuthKey----------->>>"+authLine.substring(5, authLine.length()));
authtoken = authLine.substring(5, authLine.length());
return authtoken;
}
C2DM으로 메세지를 발송하기위해서는 google계정 로그인을 해서 인증키를 받아야하는데요..
위 메소드는 그 인증키 문자열을 받는 기능을 합니다
리턴값으로 인증키를 내보내지요.
그런데 타인이 이 인증키를 획득했을때
해당 구글계정으로 로그인해서 메일도보고 뭐 이거저것 해당 계정으로 활동을 할 위험이 있을 수 있을까요?
...
채팅앱을 운영중에 있습니다.
이 앱은 C2DM발송을 클라이언트가 아닌 서버에서 모두 담당하고 있습니다.
서버가 모두 처리하니 부하가 커져, C2DM발송을 각각 클라이언트가 처리하도록 처리하려합니다.
그래서 클라이언트가 C2DM을 발송하려할때 서버에서 인증키만 받아서 C2DM을 발송하려고 합니다.
C2DM발송을 위해선
https://www.google.com/accounts/ClientLogin
구글에 로그인한 토큰인증키가 있어야 하는데요..
이것이 어플사용자에게 공개되는것은 위험하다고 생각합니다.
개발자의 계정으로 구글 서비스를 이용 할 수 있으니까요..
..
C2DM발송은 서버가 담당하는 수 밖엔 없을까요?
여러분께선 어떻게 처리 하십니까?
조언말씀 부탁드립니다. 감사합니다
전송은 https 이니까 전송중에 가로채기는 힘들듯 하구요.
소스를 reverse 하면 상수들은 볼수 있을 텐데요.
계정과 PW는 그냥 스트링으로 넣으셨으면 decompile 하면 볼 수 있을 듯하네요.