원격블로깅을 위한 또다른 방식 AtomPub

여태 블로그 원격업로드를 조사해보며, Metaweblog 기반의 XMLRPC만 작업을 해보았는데요~

일본쪽 유명블로그에 업로드하는 것을 알아보다보니 AtomAPI를 구현해야 될듯하여 정리하게 되었습니다.
아래의 문서는 http://mattn.kaoriya.net/web/20071106124750.htm 에서 발췌하여 기록합니다.

유명한 블로깅의 대부분은 원격에서 블로그를 업데이트 할 메커니즘을 제공합니다.
그 중에서도 일반적인 것이 일전에 말씀 드린 “XMLRPC”를 기반으로 한,

  1. Blogger API
  2. MetaWeblog API
  3. MovableType API

이렇게 3가지가 보편화 되어 있습니다.

현재 Blogger는 XMLRPC 방식이 아닌 Atompub를 사용하고 있습니다.
보안상 XMLRPC보다는 Atompub가 더 안전하기때문에 XMLRPC를 사용하는 사이트들은 가급적 사용을 자제시키려고 합니다.
네이버 블로그의 경우 아예 사용가능함에도 불구하고 언급도 잘 안해놓고 있는 것을 보면 알 수 있습니다.

XMLRPC의 경우는, 원격 메소드로 XML을 생성하여 블로그 게시물 제거 등을 실시하고 있지만 AtomPub의 경우 전송되는 XML 단위 자신이 문서가됩니다. 이 문서를 GET / POST (PUT) / DELETE 메서드를 사용하여 문서 (블로그)를 업데이트합니다.

AtomPub는 Atom 피드 끈을 정한 등록용 URI에 문서를 POST (PUT)하는 것으로 새 항목 기존 항목을 끈 정한 편집 URI에 POST (PUT)하는 것으로 항목을 업데이트하고 기존 항목의 편집 URI에 DELETE 메서드를 보내는 것으로 항목을 삭제합니다.

일부 서버에서 DELETE 메서드를 받아들이지 않는 것도 있기 때문에, “X – Http – Method – Override : DELETE”라는 헤더 DELETE 메서드와 동일한 작업을 수행할 수있는 것처럼되어있는 서버도 있습니다. 이 2 개의 API의 주요 차이점은 문서 형식 및 인증 방법을들 수 있습니다.

XMLRPC의 경우 각 메서드에서 사용자 ID 및 암호를 전달할 수 있습니다.
또한, XMLRPC에서 전송되는 XML 자신은 메서드 매개 변수를 포함, 그 안에는 사용자 ID와 암호를 포함하게됩니다.
따라서 이차적인 이용이 불가합니다.

하지만 AtomPub의 경우는 위에서 설명한대로 전송되는 XML 자신이 문서이기 때문에 재차 사용할 수 있습니다.
또한 인증 방법은 일반적으로 Basic 인증 또는 WSSE 인증이 사용되고 있으며 이를 통해 사용자 아이디와 비밀번호가 암호화 되어 전송되기때문에 XMLRPC보다는 안전하다고 할 수 있겠네요!

그럼 간략하게 인증방식에 대해 짚고 넘어가보도록 하겠습니다.

  1. Blogger 방식 : Basic인증 (https/http든 인증에는 지장이 없습니다. 다만 추후 https만 될 것이라고 예상)
  2. 고전적인 방식 : WSSE인증 (TypePad, Livedoor, Lovelog, So-net등에서 사용)
    1. TypePad, Livedoor, Lovelog : 블로그 관리화면에 Login 사용자 이름과 암호를 사용하여 WSSE 인증
    2. So-net : Atom API에 게시하기 위한 전용 비밀번호를 검색하고 이를 사용하여 WSSE 인증, 이름은 So-net에 로그인할 때의 사용자 이름이 아닌 So-net 블로그 별도로 설정한 사용자 이름을 사용합니다.
  3. 독자적인 방식 : WSSE인증 (Ameba)
    1. WSSE 생성 방법이 아메바 독자적인 것으로 보이지만 아마도 Atom 명세서를 오독하면서 구현했다고 생각됨

이렇듯 실제로 위와 같은 인증방식 이외에도 세부적으로 차이가 있고 그 부분을 다 고려하면 Atom API의 구현 방식의 종류는 무수히 많을 수도 있습니다. 하지만 대부분 고전적인 방식을 사용하고 있으니 참고하시면 될 것 같구요! WSSE 인증스펙에 대해 간략하게 설명 드리도록 하겠습니다.

  • Username : 해당 블로그에서 요구하는 사용자 아이디 및 이름
  • passwordDigest : base64 – SHA1(Nonce.Created.Password)를 연결하여 만들어 암호화 (Oauth 인증과 유사)
  • Timestamp : Nonce를 생성한 날짜 2012-12-31T00:00:00Z와 같은 형식 (ISO-8601)
  • Nonce : 클라이언트가 http요청을 할때 마다 고유하게 만들어진 임의의 식별자로 Atom API에서는 일반적으로 16진수의 임의의 자리수로 생성

이렇게 암호화에 대해서 간략하게 살펴보았습니다.
마지막으로 대부분의 블로그는 다음과 같은 API로 구현하고 있습니다.

아래 리스트는 일본쪽 블로그에 관련된 정보를 가져왔으니 대개의 형식이 아래와 같다고 생각하시면 됩니다.

블로그 제공 API 형식 진입점
teacup XMLRPC HTML http://white.ap.teacup.com/applet/ [username] / postmsgrpc
EGOIST 블로그 XMLRPC HTML http:// [blogid] .ebsystems.jp / xmlrpc.php
내 블로그의 처음으로 가진 blogid
FC2 블로그 XMLRPC HTML http://blog.fc2.com/xmlrpc.php
JUGEM XMLRPC HTML http:// [blogid] .jugem.jp / admin / xmlrpc.php
JustBlog Atompub HTML http://app.justblog.jp/t/atom/weblog/blog_id = blogid]
Livedoor Blog Atompub HTML http://cms.blog.livedoor.com/atom/blog_id = blogid]
MSN Space XMLRPC HTML https : / / storage.msn.com / storageservice / MetaWeblog.rpc
NetLaputa XMLRPC HTML http://blog.netlaputa.ne.jp/rpc/mt-xmlrpc.cgi
News Handler XMLRPC HTML http://blog.nettribe.org/xmlrpc.php
Seesaa 블로그 XMLRPC HTML http://blog.seesaa.jp/rpc/
WordPress XMLRPC HTML http://faq.wordpress.com/xmlrpc.php
Yahoo! 블로그 XMLRPC HTML http://api.my.yahoo.co.jp/RPC2
Blogger Atompub HTML http:// [blogid] .blogspot.com / feeds / posts / default
Blogger XMLRPC HTML http://blog.goo.ne.jp/xmlrpc.php
pwBlog XMLRPC HTML http://www.pwblog.com/xmlrpc
Vox Atompub HTML http:// [blogid] .vox.com / library / posts / atom.xml
는이라고북마크 AtomPub TEXT http://b.hatena.ne.jp/ [username] / atom /
Hatena 다이어리 Atompub Hatena 표기법 http://d.hatena.ne.jp/ [blogid] / edit
아메바 Atompub HTML http://ameblo.jp/servlet/_atom/blog/ [blogid]
코코 로그 XMLRPC HTML http://app.f.cocolog-nifty.com/t/api
도리코무 XMLRPC HTML http://blog.drecom.jp/api/xmlrpc
블로그 명 XMLRPC HTML http://app.blog.ocn.ne.jp/t/api/
PLAYLOG XMLRPC Wiki http://playlog.jp/_atom/blog/ [blogid]

Published by

안반장

Web과 App 개발을 하고 있으며 최근 워드프레스에 관심이 많아져 네이버 카페 워드프레스 홈페이지의 TF팀으로 활동 중 입니다.개인적으로는 안반장의 개발 노트라는 블로그를 운영하면서 개발의 즐거움과 고충들을 차곡차곡 담아가고 있습니다.