Python 으로 다음 인증 API test.
Python 으로 간단하게 Daum 인증 API 를 테스트 해보려고 다음과 같은 코드를 “일단 작동하게”
원칙에 입각해서; 간단히 만들어 봤다. 보안문제로; 인증키나 기타 키들은 모두 일부러 예제사이트의 것으로 바꿔놨다. 혹시 테스트해 보실분은 자신의 것으로 사용하시라.
#!/usr/bin/python
import sys
import sha
import time
import hmac
import urllib
import random
LOGIN_URL = ‘https://apis.daum.net/account/login.daum’
APID = ‘ba8c53ab7970189d93a7′
APPKEY = ‘4125603e35da5d8820b07dc7b19050dbc838336b’
SIGNKEY = ‘8e4d0a924c60e65ccc38b7f9958f37ff5105f8e1′
def daum_sign_url_hmacsha1(url, signkey):
ts = time.strftime(’%Y%m%d%H%I%S’, time.gmtime())
nonce = ‘’.join([ ‘%02x’ % r for r in [random.randint(0,255) for x in range(8)]])
surl = url + ‘&ts=%s&nonce=%s’ % (ts , nonce)
return surl + ‘&sigalg=hmacsha1&sig=%s’ % hmac.new(signkey,surl, sha).hexdigest()
if __name__ == “__main__”:
if len(sys.argv) < 2:
print “usage: %s returl” % sys.argv[0]
sys.exit(0)
data = {’apid’: APID, ‘apikey’: APPKEY, ‘returl’: sys.argv[1]}
loginurl = LOGIN_URL + ‘?’ + urllib.urlencode(data)
print daum_sign_url_hmacsha1(loginurl, SIGNKEY)
만들어진 signed url 을 브라우저 주소창에 넣고 로그인폼이 나오기를 기대하며 엔터를 누른순간, 다음과 같은 에러를 받았다;;

무엇이 잘못된 것일까..
1. apikey 별로 sign key 가 발급되는데 내가 번지를 잘못찾아서 다른 apikey 를 받았다. (검색 쇼핑 블로그 여행중에 어느것을 받아야할까. )
2. referer check 를 한다. (그런데 에러코드는 sign 이 틀렸다는데?)
3. returl 이 sign 되기전에 urlencode 되면 안된다?
4. python hmacsha1 keyed hashing 에 문제가 있다;;;
5. sigkey 라는 숨겨진파라미터가 있다;;;
6. 내가 발급받은 signkey 가 아직 다음 시스템에 등록이 안됬다?
음 결과가 궁굼하신분은 아래 다음 API 포럼의 답변을 기대하시라.
http://dna.daum.net/forum/viewtopic.php?t=63
덧붙임:
결론은 -_-;
“내가 바보같이 hmac.new 에 사용될 signkey 를 hex 코드 그대로 사용했다”
입니다. signkey unhexify 하니까 아주 잘됩니다. 그런데 이번에는 인증토큰을 얻는 과정에서
unregistered apikey 에러가 나서 열심히 원인 찾고 있습니다. 포럼에도 업데이트 했구요.
아시는 분은 조언좀 부탁드립니다. ^^






