DNA 포럼 API 서비스 모음 DNA Lens
API 서비스 전체 API 목록 | 개발자 포럼 | 예제 모음 | 개발자 행사 DevDay | DevNight | API 콘테스트 | 매쉬업경진대회@

Daum 인증 API


Daum 인증 API는 외부 (third-party) 웹 사이트를 통해서 Daum 내의 사용자 개인화 서비스를 사용할 수 있도록 해 주는 사용자 인증 서비스 입니다.

Daum 오픈 API 중에서 로그인 기반의 개인화 서비스( 예, 블로그 글쓰기 API )는 "Daum 사용자 인증 토큰"을 필요로 합니다. Daum 인증 API는 Daum 사용자 와 외부 웹 사이트간의 상호작용을 통해서 외부 웹 사이트가 "Daum 사용자 인증 토큰"을 얻을 수 있는 서비스를 제공합니다.

다음은 사용자 와 외부 웹사이트, 그리고 Daum 인증 API 간의 상호 작용을 보여줍니다. api_auth_diagram.gif

Daum 인증 API를 이용하여 블로그 댓글 목록을 가져오는 예제를 통해 구체적인 사용방법을 확인할 수 있습니다.
[http]"Daum 인증 API 예제, PHP"

외부 웹사이트는 Daum 인증 API를 이용하기 위해서 다음과 같은 네가지 구성을 해야 합니다.
  1. 웹사이트 등록
  2. 인증 토큰 생성을 위한 Daum 로그인 요청
  3. 인증 토큰 획득
  4. 인증 토큰 저장 및 Daum 오픈 API 에서 사용

1. 웹사이트 등록 #

Daum 인증 API를 이용하기 위해서는 웹 사이트 와 Daum 오픈 API 인증키를 등록해야 합니다. 웹 사이트는 [http]"프로그램 인증키 발급"에서 등록할 수 있습니다. 웹 사이트 등록과 함께 "Daum 사용자 인증 토큰"을 필요로 하는 Daum 오픈 API에 대해서 인증키를 발급받아야 합니다. [http]"인증키 발급"에서 발급 받을 수 있습니다.

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 (필수) 사용자 인증 후 되돌아갈 웹 사이트 주소

서명 #

Daum 로그인 API는 서명된 호출만을 허용 합니다. HowToSign "서명 하기 및 예제 코드"를 참조하십시오.

응답 ( Response ) #

Daum 로그인 API는 로그인 FORM을 출력합니다. 이 FORM은 다음 과 같은 정보를 제공합니다.

  • 로그인 요청 웹사이트 정보 표시
  • 로그인 요청 웹사이트의 신뢰성 표시
  • 사용자 인증 토큰 유효기간 설정
  • 로그인 IP 주소 확인 옵션 설정
  • 웹사이트에 인증 토큰 전달 동의

Daum 오픈 API 인증 시스템이 웹사이트를 확인하고 검증한 경우

account_login.jpg

Daum 오픈 API 인증 시스템이 웹사이트를 확인하지 못한 경우

account_login_warning_2.jpg


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 URI ) #

https://apis.daum.net/account/token.daum

반드시 https 로 전달되어야 합니다.

요청 파라미터 ( 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 )

서명 #

인증 토큰 획득 API는 서명된 호출만을 허용 합니다. HowToSign "서명 하기 및 예제 코드"를 참조하십시오.

응답 ( 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에서 인증 토큰 사용 방법 #

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이 존재하지 않음.