FacebookやTwitterをはじめ、mixiやLinkedInでも使用されているAPIへの接続の基本とも言えるOAuth。ソーシャルメディアを活用したウェブサービスを構築するには、OAuthをしっかり理解しておいたほうが良さそうです。そこで、今回はOAuthについての基本情報をまとめてみました。実装作業に入る前の予備知識として知っておくと開発が早く進むと思います。
OAuthをひとことで言うと
「ユーザがとあるサービスAにサービスBを経由して安全に接続するための認証手段」といえば分かるでしょうか。これによって、ユーザはサービスAで使用しているユーザ名やパスワードを、第3者であるサービスBに明かさずに安全に接続できるようになるわけです。
たとえば、このブログのユーザはTwitter(サービスA)にこのサイト(サービスB)を経由して安全につぶやきを投稿できるようになるわけです。その際、このサイトのオーナーである僕にはTwitterのユーザ名とパスワードは明かされません。
2つのOAuth
2011年2月現在、OAuthには1.0と2.0があってサービスによって使用しているバージョンが異なります。OAuth.netによるとOAuth Core 1.0は2007年12月に安定版になり2009年にセキュリティの改善がされてOAuth Core Revision Aに改訂となったそうです。現在では、このOAuth 1.0aと2010年5月にドラフト第1案が発表されたOAuth 2.0が実際に使用されているようです。1.0aはすでに安定版として仕様も固まっているようですが、2.0のほうは安定してはいるものの、未だに機能が追加・変更されている状態。2011年1月にv2-12が出ています。
OAuth 1.0aを使っている主要なソーシャルメディア・サービス:
OAuth 2.0 (v2-10) を使っている主要なソーシャルメディア・サービス:
- mixi
※「Introducing OAuth 2.0」という記事にはFacebookとTwitterではOAuth 2.0を部分的にサポートしていると書いてありました。2010年5月の記事なので、TwitterでもすでにOAuth 2.0をサポートしてる?(開発者向けページには1.0aのことしか書いてないようですが要確認)
それぞれの仕様
1.0と2.0の違い
すごく大雑把に言ってしまうと、2.0ではプロセスがシンプル化され、開発者にとってより扱い安いようになっています。詳しくは@ITの「OAuth 2.0でWebサービスの利用方法はどう変わるか」あたりで分かりやすくまとめられているのでそちらをご参照ください。
英語ですが、こちらでも1.0と2.0の違いを分かりやすく説明しています。
2.0はここが違う — 3つのポイント
- 認証プロセスのシンプル化で実装が楽になった
- 各デバイス向け「フロー(認証の流れ)」が設けられた
- FacebookやmixiでOAuth 2.0が使われていて2.0が主流になるのは時間の問題
1.0では認証の際に複雑な「署名」のやりとりが必要で、その「署名」を生成するのが大変でエラーを多くする要因でもあるそうです。各プログラミング言語でライブラリが用意されているので、それらが使えれば問題なさそうですが、ライブラリが要求するサーバ環境などを考慮すると、それでもまだまだ開発者の手間は多そうです。2.0の仕様と比べると開発の手間が多いのは一目瞭然です。「[OAuth]PHPを読んだことある人のためのOAuthのSignature解説」で「署名(Signature)」の生成方法が詳しく説明されていますので興味のある方は一度読んでみると良いと思います。
参考サイト一覧
OAuth全般
- OAuth.net (英語)
- OAuth.jp
- @IT — OAuth 2.0でWebサービスの利用方法はどう変わるか
1.0と2.0の認証フローについて分かりやすいチャートが掲載されています - Gihyo.jp — ゼロから学ぶOAuth
OAuth 1.0について
OAuth 2.0について
まとめ
実際にFacebookやmixiのAPIにOAuth 2.0を使って接続をしてみて思ったのですが、OAuth 2.0のほうはプロセスも分かりやすく1.0と比べると実装もずいぶん楽になったんだろうなぁと思っています。FacebookやTwitter連携が当然になってきた昨今、OAuthはウェブ界隈の人たちの「一般常識」になると言っても過言ではないと思います。実装は開発者に任せるとしても、基本知識くらいは知っておいたほうが良さそうですね。
2011年2月12日に公開され、2011年7月4日に更新された記事です。
About the author
「明日のウェブ制作に役立つアイディア」をテーマにこのブログを書いています。アメリカの大学を卒業後、ボストン近郊のウェブ制作会社に勤務。帰国後、東京のウェブ制作会社に勤務した後、ウェブ担当者として日英バイリンガルのサイト運営に携わる。詳しくはこちら。
ウェブ制作・ディレクション、ビデオを含むコンテンツ制作のお手伝い、執筆・翻訳のご依頼など、お気軽にご相談ください。いずれも日本語と英語で対応可能です。まずは、Mastodon @rriver@vivaldi.net 、Twitter @rriver 、またはFacebook までご連絡ください。
[…] 初心者のためのOAuth - OAuthの基本のキ http://parashuto.com/rriver/development/learning-oauth-basics The OAuth 2.0 Protocol http://openid-foundation-japan.github.com/draft-ietf-oauth-v2.ja.html The […]