티스토리 뷰

728x90
반응형
인증이 필요한 구글의 서비스에 대한 API를 이용하기 위해서는

반드시 ClientLogin을 통해 인증절차가 필요합니다.

그리고 이 과정에서 생성된 auth 값을 이용하여 인증을 하지요.


이 과정에서 난데 없이 captcha를 요구하는 상황이 발생한 적이 있어 이 사례를 공유해볼까 합니다.

이 사례는 구글의 개발문서에도 잘 나와있습니다.


혹시 captcha(캡챠)가 뭔지 생소하신가요?



여러분들이 가끔 만나는 이 화면이 바로 캡챠입니다.

신원확인을 위해, 그러니깐 봇(bot)인지 아닌지 확인하기 위한 용도로 쓰이는 방법이지요.



구글 ClientLogin을 통해 인증을 요청했을때 갑자기 아래와 같은 response가 나타났습니다.

이미 아주 잘 사용하고 있었는데 말이죠.


HTTP/1.0 200 OK
Server: GFE/1.3
Content-Type: text/plain

SID=DQAAAGgA...7Zg8CTN
LSID=DQAAAGsA...lk8BBbG
Auth=DQAAAGgA...dk3fA5N

 ~~~~~~~~~

HTTP/1.0 403 Access Forbidden
Server: GFE/1.3
Content-Type: text/plain

Url=http://www.google.com/login/captcha
Error=CaptchaRequired
CaptchaToken=DQAAAGgA...dkI1LK9
CaptchaUrl=Captcha?ctoken=HiteT4b0Bk5Xg18_AcVoP6-yFkHPibe7O9EqxeiI7lUSN





error가 바로 CaptchaRequired 입니다.

캡차가 필요하다란 말이죠.


해결방법은 둘째 치고, 이러한 현상이 왜 생겨났지?

원인을 밝혀내는것도 중요한 일이었습니다.

사실 captcha 라는 것이 비밀번호를 여러번 틀렸을 때 나타나는 것이니깐요.


구글링을 통해 좀 더 탐색해보니

짧은 시간안에 여러번의 인증을 요청했을때도 보안상의 이유로 캡챠가 나타난다고 합니다.

그 짧은 시간이라는건 정확한 정의가 없네요.(대략 1~5초 정도로 생각됩니다.)


아무튼 짧은 시간안에 구글 로그인 인증을 여러번 요청하면,

불법 접속을 의심하여, 캡챠를 요구하는 것 같습니다.



그래서 로직에 무슨 문제가 있었을까 고민을 해보니 아주 기초적인 부분에서 문제가 있었습니다.



c2dm을 이용함에 있어 ClientLogin을 사용했는데


여러개의 c2dm을 보낼땐 위의 그림처럼 ClientLogin을 통해 한번만 로그인 인증을 한뒤


그 인증정보로 여러개의 c2dm 요청을 반복적으로 했어야 하는데


아래 그림처럼 문제가 있었습니다.






인증과 c2dm 발송 요청을 하나로 묶어 계속 반복해서 처리를 했던 것이지요.


즉, 한,두개의 c2dm을 발송할 때는 아무런 문제가 되지 않는데


다수의 c2dm을 발송할때 단시간에 여러번의 인증 요청을 하게 되어 captcha가 나타났던 것입니다.


아하!



해결 방법은 어렵지 않습니다.


인증 요청시 함께 reponse된


CaptchaUrl=Captcha?ctoken=HiteT4b0Bk5Xg18_AcVoP6-yFkHPibe7O9EqxeiI7lUSN


ctoken 값을 복사하여


http://www.google.com/accounts/Captcha?ctoken=HiteT4b0Bk5Xg18_AcVoP6-yFkHPibe7O9EqxeiI7lUSN

url 형태를 완성한 후 브라우저에 입력하여 캡챠정보와 함께 로그인을 한번 완료하면 됩니다.



여기서 중요한건 ClientLogin 인증을 단시간에 여러번 하는 실수를 하지 말아라! 입니다 ^^

참 쉽죠?
728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함