mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

OAuthは熱いかも?な件に関して

お久しぶりです、最近はすっかり寒くなってきましたねー。原宿のオフィス環境に最近慣れてきたトールマエサカです。さておき、今日は認証API系のお話をしたいと思います。

OAuthとは?

OAuthとは、最近注目されているウェブ上での認証プロトコルの事です。1.0プロトコルの最終ドラフトが、今月リリースされ、良い機会なのでエンジニアブログに書いてみました。 このエントリーを書いている課程で資料を検索してみたらまちゅさんが大変素晴らしい記事:

を既に書かれている事に気がついたので私は軽くなめる程度にします。

で、実際にOAuthがどういう風に役に立つかというと、例えばウェブサービスAがウェブサービスBから、サービスBでのユーザの認証情報 (idとかpassword) を問わずにデータをユーザの代理として入手できるという感じで概要に紹介されてます。

OAuth Core 1.0 Draft 4からの引用ですが、以下の文が良い感じでOAuthを定義しています:

The OAuth protocol enables websites or applications (Consumers) to access Protected Resources from a web service (Service Provider) via an API, without requiring Users to disclose their Service Provider credentials to the Consumers. More generally, OAuth creates a freely-implementable and generic methodology for API authentication.

私の直訳:

OAuthプロトコルはウェブサイト、もしくはアプリケーション(コンシューマ)がAPI経由でユーザにサービスプロバイダ用の証明情報をコンシューマに提供させず、サービスプロバイダにより保護されたリソースにアクセスする事を可能にします。より一般的にいうと、OAuthはAPI認証を自由に実装できて、かつジェネリックな手法を実現します。

で、肝心なところはドラフトの一番最初にも書かれていますが、OAuthは特定のサービスにログインするための認証プロトコルではなくて、OAuthをサポートするサービス間(OAuthネットワーク) での連携を実現するためのプロトコルであるという事です。

なぜOAuthが必要か?

こういったプロトコルは世の中には既に存在します。ここで問題なのが数多く存在するウェブサービス同士の標準的なプロトコルが存在しないという事です。つまりサービスAのエンジニアはサービスAをサービスBと連携するためにサービスBの仕様を調査し、それ相応の行動を取らねばなりません。世の中にあるメジャーなウェブサービス達がまさにそうですね。

そこで、OAuthです。ドラフトに書かれている様に、OAuthコミュニティの目標は様々に存在するデータ交換に際する認証プロトコルを、コミュニティによってドライブされたプロトコルに統一する事です。ちなみに新しいプロトコルというよりかは既に存在する様々なプロトコルとベストプラクティスを参考にしているとドラフトに書かれています。実際にプロトコルを開発しているメンバー達はメジャーな組織の人たちばかり。SixApartでも前向きに応援してる様ですね。

プロトコルの内容

ドラフトは軽く読むには長いかと思いますが認証部分をビジュアライズするだけであれば、認証フローを見るだけで十分。 認証フローは以下の三つのステップに分かれていると表記されてますね:

  1. コンシューマが認証Request TokenとToken Secretを取得する
  2. ユーザがRequest Tokenを承認する
  3. コンシューマがRequest TokenをAccess Tokenと交換する

コンシューマがAccess TokenとToken Secretを入手してはじめてユーザの代理として守られた外部サービスのデータにアクセスする。説明が大雑把ですが、基本的に簡素です。

まとめ

OAuthのコンセプトは個人的には素晴らしいと思うのですが実際にはまだレビュー段階で何とも言えませんし、データアクセスプロトコル自体の標準化がまだ先に待ち構えていますし、これから新しく出来るウェブサービス達がOAuthを実際に採用するか?、そして昔から存在する老舗が採用するか?など色々と見所があります。最悪の想定だと既に幾つも存在するバラバラのプロトコルの一つになってしまう可能性もあるわけで、個人的にこういうネタが大好きなのでこれからが本当に楽しみです。