連載
» 2012年08月27日 10時00分 UPDATE

デジタル・アイデンティティ技術最新動向(1):「OAuth」の基本動作を知る (1/2)

いまWebの世界では、さまざまなWebサービスが提供するプラットフォームと、サードパーティが提供するアプリケーションがAPIを中心に結び付き、一種の「APIエコノミー」を形成しています。この連載では、そこで重要な役割を果たす「デジタル・アイデンティティ」について理解を深めていきます。(編集部)

[Nov,@IT]

デジタル・アイデンティティの世界へようこそ

 はじめまして、OpenID Foundation JapanでエバンジェリストをしているNovです。

 この連載では、僕を含めOpenID Foundation Japanにかかわるメンバーで、OpenID ConnectやOAuthなどの「デジタル・アイデンティティ(Digital Identity)」にかかわる技術について紹介していきます。

APIエコノミー時代のデジタル・アイデンティティ

 世界中で9億人のユーザーを抱える「Facebook」や5億人のユーザーを持つ「Twitter」など、巨大なソーシャルグラフを持つサービスが、日々その存在感を増しています。日本でも、グリーやモバゲーなどがそれぞれソーシャルゲームプラットフォームを公開し、国内に一気に巨大なソーシャルゲーム市場を作り上げました。最近では、ユーザー数が5000万人を突破し、プラットフォームを公開した「LINE」も記憶に新しいところです。

 これらのサービスはプラットフォーム公開に際して、それぞれのサービス機能を「API」として外部に提供しています。APIを公開することで、外部デベロッパーが新たなサービスを提供し、それが結果的に、ユーザーにより多くの価値を提供することにつながっていくのです。

 プラットフォームとその上で提供されるサードパーティのアプリケーションが作り出す市場は、APIを中心にした「APIエコノミー」とも表現できるでしょう。

 このAPIエコノミーでは、1つのサービスが複数のプラットフォームと連携するといった状況も当然出てきます。そういった状況では、各プラットフォームの差別化要因となる部分以外は、標準化されたプロトコルを可能な限り導入し、API連携にかかるサードパーティデベロッパーのコストを抑えることが重要になります。

 個人的には、今後、APIエコノミーが

  • ユーザーのその時点でのコンテキストを理解し(Identity、Sensing……)
  • 任意の適切なサービスを発見し(Discovery)
  • それを動的に連携させる(OAuth、OpenSocial……)

といった方向に進むにつれて、“デジタル・アイデンティティ”の重要性が増していくのではないかと思います。

 この“デジタル・アイデンティティ”は、好むと好まざるとにかかわらず、皆さんがWebの世界で生きていく上で非常に重要な概念です。ただ、この言葉自体を理解するのはなかなか大変です。この連載を通じてデジタル・アイデンティティについての理解が徐々に深まればと思います(注1)。もちろん、デジタル・アイデンティティ自体を理解していなくても、各要素技術について理解できるように書いていくつもりです。

注1:デジタル・アイデンティティ自体に興味を持ち、より深く理解したいという場合には、以下の資料をご覧ください。


 さて、連載の第1回と第2回は、ユーザーの認可の下でAPIアクセスを行う場合に必要になる「OAuth」というプロトコルについて紹介します。

OAuthとはどういうプロトコルか

 いままでにFacebookやTwitter、Googleなどが提供するAPIを使ってサービスを開発したことがあるデベロッパーならば、何らかの形でOAuthに触れたことがあるでしょう。

 また、FacebookやTwitterのIDを用いて外部サイトにログインしたことがある方も、実は、エンドユーザーとしてOAuthに触れています(GoogleやYahoo! IDでのログインは、OAuthではなくOpenIDというプロトコルを用いていますが、それについては次回触れます)。

 ひと言でいうとOAuthは、

  • あるサービス(サービスA)上にエンドユーザーが所有するリソースや、そのエンドユーザーがアクセス権限を持つサービスAの各種機能に対し、
  • エンドユーザーの許可を受けたほかのサービス(サービスB)がアクセスする

ために

  • エンドユーザーがサービスBに対して許可を与え
  • サービスBがサービスAの提供するAPIにアクセスする際に許可を受けていることを証明する

という一連のフローを、セキュアに実現することを目的とした「アクセス権限の付与」のためのプロトコルです。

 以下に2つほど、もう少し具体的な例を挙げてみましょう。

OAuthの利用事例

例1:Instagramで共有した写真をFacebookやTwitterにも投稿

 Instagramをはじめとしたカテゴリ特化型のアプリケーションの多くは、FacebookやTwitterといったほかのサービスにも同時にコンテンツを投稿する機能を備えています。

 Instagramならば、設定画面の[Sharing settings]からTwitter、Facebook、Flickr、TumblrそしてFoursquareといった複数の外部サービスと連携するように設定できます。利用するプラットフォームや連携するサービスごとにアクセス権限付与時のユーザー・エクスペリエンスは異なりますが、Instagramで外部サービスへの投稿を行う際には、連携サービスを問わず、すべてOAuthが使われています。

画面1 Instagramから写真をTwitterとFacebookにシェア 画面1 Instagramから写真をTwitterとFacebookにシェア

 InstagramはOAuthを用いて、ユーザーの代理として写真を投稿するためのアクセス権限を受け取ります。ひとたびアクセス権限の付与を受けると、ユーザーがInstagramで写真をアップロードするたびに、各サービスが提供するAPI経由で写真をクロスポストします。

画面2 Facebook上でシェアされたInstagramの写真 画面2 Facebook上でシェアされたInstagramの写真

例2:Facebook IDでほかのサイトにログイン

 FoursquareやPinterestなど、最近では至るサービスで「Facebook IDでログイン」や「Twitter IDでログイン」というボタンを見かけます。

画面3:Foursquareのログイン画面 画面3:Foursquareのログイン画面

 OAuthは本来ID連携のために設計されたものではないのですが、FacebookやTwitterなどのようにユーザーのプロフィール情報(特にユーザーの識別子)を取得するためのAPIが存在する場合、ID連携に用いることもできます。

 OAuthでAPIへのアクセス権限を受け取る際には、FacebookやTwitterがユーザーの認証を行っています。ですから、それらの認証結果を信頼した上で各アプリがプロフィールAPIにアクセスしてユーザーの識別子を習得すれば、ユーザーを認証できるのです。新規登録時にFacebookやTwitterからプロフィール項目を取得してくることで、ユーザーの入力項目を減らしたり、ゼロにすることもできます。

 またID連携やプロフィール情報の取得だけでなく、ポストの投稿権限や友達リストなどを取得することも可能です。このため、FacebookやTwitterなどのプラットフォーム上でバイラルにサービスを広めたいサービスでは「Facebook IDでログイン」や「Twitter IDでログイン」といったボタンが多く利用されています。

 しかしながら前述の通り、OAuthは本来、認証のために設計されたプロトコルではありません。このため、誤った使い方をして脆弱性を生み出しているケースも(特にiPhone/Androidアプリに)多く見受けられます。その点については本稿後半で紹介します。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。