Daum 인증 API
Daum 인증 API는 외부 (third-party) 웹 사이트를 통해서 Daum 내의 사용자 개인화 서비스를 사용할 수 있도록 해 주는 사용자 인증 서비스 입니다.
Daum 오픈 API 중에서 로그인 기반의 개인화 서비스( 예, 블로그 글쓰기 API )는 "Daum 사용자 인증 토큰"을 필요로 합니다. Daum 인증 API는 Daum 사용자 와 외부 웹 사이트간의 상호작용을 통해서 외부 웹 사이트가 "Daum 사용자 인증 토큰"을 얻을 수 있는 서비스를 제공합니다.
다음은 사용자 와 외부 웹사이트, 그리고 Daum 인증 API 간의 상호 작용을 보여줍니다.
외부 웹사이트는 Daum 인증 API를 이용하기 위해서 다음과 같은 네가지 구성을 해야 합니다.
- 웹사이트 등록
- 인증 토큰 생성을 위한 Daum 로그인 요청
- 인증 토큰 획득
- 인증 토큰 저장 및 Daum 오픈 API 에서 사용
1. 웹사이트 등록 #
Daum 인증 API를 이용하기 위해서는 웹 사이트 와 Daum 오픈 API 인증키를 등록해야 합니다.
웹 사이트는
"프로그램 인증키 발급"에서 등록할 수 있습니다.
웹 사이트 등록과 함께 "Daum 사용자 인증 토큰"을 필요로 하는 Daum 오픈 API에 대해서 인증키를 발급받아야 합니다.
"인증키 발급"에서 발급 받을 수 있습니다.
"프로그램 인증키 발급"에서 등록할 수 있습니다.
웹 사이트 등록과 함께 "Daum 사용자 인증 토큰"을 필요로 하는 Daum 오픈 API에 대해서 인증키를 발급받아야 합니다.
"인증키 발급"에서 발급 받을 수 있습니다.
2. 인증 토큰 생성을 위한 Daum 로그인 요청 #
웹 사이트는 "사용자 인증 토큰"이 필요한 Daum 오픈 API를 호출하게 될때, 사용자의 유효한 인증 토큰이 없는 경우에
사용자가 Daum 로그인을 수행하도록 사용자 브라우저를 이 API의 요청 주소로 redirect 시켜야 합니다.
요청 주소 ( Request URI ) #
https://apis.daum.net/account/login.daum
요청 파라미터 ( Request Parameter ) #
요청 주소의 QueryString 파라미터로 아래와 같은 파라미터가 전달되어야 합니다.
인증 파라미터 #
| 요청 변수 | 값 | 설명 |
| apid | 20 byte hexadecimal string (필수) | 웹사이트 프로그램 인증키 |
| apikey | 40 byte hexadecimal string (필수) | 인증 토큰이 사용될 오픈 API에 대한 인증키 |
서비스 파라미터 #
| 요청 변수 | 값 | 설명 |
| returl | string (필수) | 사용자 인증 후 되돌아갈 웹 사이트 주소 |
응답 ( Response ) #
Daum 로그인 API는 로그인 FORM을 출력합니다. 이 FORM은 다음 과 같은 정보를 제공합니다.
- 로그인 요청 웹사이트 정보 표시
- 로그인 요청 웹사이트의 신뢰성 표시
- 사용자 인증 토큰 유효기간 설정
- 로그인 IP 주소 확인 옵션 설정
- 웹사이트에 인증 토큰 전달 동의
Daum 오픈 API 인증 시스템이 웹사이트를 확인하지 못한 경우
3. 인증 토큰 획득 #
사용자가 Daum 로그인 Form 에서 인증 토큰에 대한 보안 설정과 사용동의를 하고 ID/PWD 인증을 받으면,
Daum 로그인 API를 호출할때 전달한 returl 주소 값으로 사용자 인증 토큰을 얻을 수 있는 정보가 전달됩니다.
returl = http://www.blog.com/daumlogin 이라면, http://www.blog.com/daumlogin?utref=[utrefid] 로 사용자 브라우저가
redirect 됩니다. utrefid는 16byte hexadecimal string 입니다. ( 예, bda3909a806c4972 )
returl은 이제 utrefid 값을 이용하여 '인증 토큰'을 획득해야 합니다.
요청 파라미터 ( Request Parameter ) #
요청 주소의 QueryString 파라미터로 아래와 같은 파라미터가 전달되어야 합니다.
인증 파라미터 #
| 요청 변수 | 값 | 설명 |
| apid | 20 byte hexadecimal string (필수) | 웹사이트 프로그램 인증키 |
| apikey | 40 byte hexadecimal string (필수) | 인증 토큰이 사용될 오픈 API에 대한 인증키 |
서비스 파라미터 #
| 요청 변수 | 값 | 설명 |
| utref | 16 byte hexadecimal string (필수) | 전달받은 utrefid 값 |
| duip | string (필수) | 사용자의 IP 주소 ( 예, 210.231.21.53 ) |
응답 ( Response ) #
인증 토큰 획득 API는 text/html 의 content-type으로 아래의 본문을 전달합니다.
token=<인증 토큰> expire=<만료일>
인증 토큰은 40 byte 의 hexadecimal string으로 전달됩니다.
만료일은 인증 토큰의 유형에 따라 다음과 같이 전달됩니다.
- 일회 토큰 : "0"
- 유효기간(한 시간, 하루) : 해당시간 ( ex, 20060831121010 ). UTC Time 값이 전달됩니다.
- 영구 토큰 : "no-expire"
content-type: text/html token=2acf429ce980af051b59f1c820a208811e7506a5 expire=20060831121010오류가 발행하는 경우엔, text/xml 의 content-type으로 에러 XML이 전달됩니다.
content-type: text/xml [에러 xml]
4. 인증 토큰 저장 및 Daum 오픈 API 에서 사용 #
3번에서 받은 "인증 토큰" 과 "만료일"은 이 웹사이트에서 요청한 Daum 오픈 API에 접근할 수 있는 사용자 인증 토큰 입니다.
웹 사이트는 이 정보를 저장하여, 사용자가 웹 사이트를 이용하여 인증 토큰 유효기간 내에 재 인증을 받지 않고도
Daum 오픈 API를 사용할 수 있도록 합니다.
인증 토큰 제한 사항 #
인증 토큰의 유효기간이 일회 또는 한 시간일 경우에는 웹사이트의 서버 세션에 저장할 수 있으며, 영구 토큰인 경우에는 반드시
웹사이트의 데이터 베이스에 저장해야 합니다.
웹사이트를 등록하게 되면, 기본으로 "한 시간" 과 "일회" 토큰을 발행할 수 있도록 설정됩니다.
또한, 한 웹사이트가 발행 받을 수 있는 유효한 "사용자 인증 토큰"은 그 수가 Daum 오픈 API 인증 시스템에 의해서 제한 되어 있습니다.
유효기간 "하루 이상 토큰" 과 "영구 토큰"의 발행은 별도의 웹사이트 인증 과정을 통해서 허가됩니다. Daum 오픈 API 관리자에게 문의하시기 바랍니다.
웹사이트가 보유할 수 있는 유효한 "사용자 인증 토큰" 개수 제한을 완화하거나 풀고 싶다면, Daum 오픈 API 관리자에게 문의하시기 바랍니다.
인증 토큰 파라미터 #
이 인증 토큰 파라미터는 Daum 오픈 API 호출 파라미터 (QueryString) 으로 포함되어 전달됩니다.
또한, 인증 토큰 파라미터가 전달되는 경우, 이 요청은 반드시 서명 되어야 합니다.
| 요청 변수 | 값 | 설명 |
| dutoken | 40 byte hexadecimal string (필수) | Daum 오픈 API 에 대한 사용자 인증토큰 |
| duip | string (필수) | 사용자가 현재 연결되어 있는 인터넷 IP 주소 (210.124.15.22) |
오류 메시지 #
공통 오류 메시지는 다음과 같습니다.
오류는 다음과 같은 XML로 전달됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<apierror>
<code></code>
<message></message>
<dcode></code>
<dmessage></dmessage>
</apierror>
오류 XML의 각 항목은 아래와 같은 값을 가집니다.
| 오류 코드 (code|dcode) | 오류(message) | 상세 오류(dmessage) | 설명 |
| 10 | | invalid request | 오픈 API 호출이 공통 호출 규약에 맞지 않은 경우에 전달된다. | |
| 10 | 11 | invalid request | apikey missing | apikey 파라미터가 없음 |
| 10 | 12 | invalid request | Missing auth parameter 'ts'. | ts 파라미터가 없음 |
| 10 | 13 | invalid request | Missing auth parameter 'nonce'. | nonce 파라미터가 없음 |
| 10 | 14 | invalid request | Missing auth parameter 'sigalg'. | sigalg 파라미터가 없음 |
| 10 | 15 | invalid request | Missing auth parameter 'sig'. | sig 파라미터가 없음 |
| 10 | 18 | invalid request | Missing parameter 'apid'. | apid 파라미터가 없음 |
| 20 | | unknown ap instance | 프로그램 인증 실패. | |
| 20 | 21 | unknown ap instance | invalid apikey | 유효하지 않은 apikey |
| 20 | 22 | unknown ap instance | unregistered apikey | 등록되지 않은 apikey |
| 20 | 23 | unknown ap instance | unregistered apid | 등록되지 않은 apid |
| 20 | 24 | unknown ap instance | Signature sigkey is not valid. | 유효하지 않은 서명키 |
| 20 | 25 | unknown ap instance | invalid apid | 유효하지 않은 apid |
| 20 | 26 | unknown ap instance | SignatureKey is not issued to this apikey. | apikey 해당하지 않는 서명키 |
| 20 | 27 | unknown ap instance | ts, nonce are reused. | ts,nonce 재사용 오류 |
| 20 | 28 | unknown ap instance | Unsupported Sign Algorithm. | 지원하지 않는 서명 알고리즘 |
| 30 | | unknown daumuser | apikey 소유자의 Daum 인증 실패. | |
| 40 | | access denied | 서비스 접근 거부 | |
| 40 | 41 | access denied | valid api call but traffic overed | 하루 api 호출 traffic 초과 |
| 40 | 42 | access denied | apikey does not match api category | 이 apikey 로 호출할 수 있는 api 가 아님 |
| 40 | 43 | access denied | unsigned call | 서명되지 않은 호출 |
| 40 | 44 | access denied | unregistered ip | 등록되지 않은 IP 주소 |
| 40 | 45 | access denied | apid doesnot use api | 프로그램이 이 api를 사용하고 있지 않음 |
| 404 | no such api | 해당 오픈 API 서비스가 없음 | |
| 500 | system error | 오픈 API 서비스 내부 시스템 에러. | |
| 504 | service timeout | 오픈 API 서비스 연결 실패. 서비스 시스템 과부하 또는 장애로 인한 서비스 연결 실패. | |
| 100 | | service api runtime error | 오픈 API 서비스 실행 오류. 101~299 값을 가지며, 각 API 에서 정의함. |
이 API의 추가 오류 메시지는 다음과 같습니다.
| 오류 코드 (code|dcode) | 오류(message) | 상세 오류(dmessage) | 설명 |
| 10 | 16 | invalid request | Missing parameter 'duip' | duip 파라미터가 없음 |
| 10 | 17 | invalid request | Missing auth parameter 'dutoken' | dutoken 파라미터가 없음 |
| 10 | 19 | invalid request | Missing parameter 'returl' | returl 파라미터가 없음 |
| 10 | 101 | invalid request | Missing parameter 'utref' | utref 파라미터가 없음 |
| 70 | 71 | invalid utrefid | invalid utref for token.daum | utref 값에 해당하는 UserToken이 존재하지 않음. |



