gihyo.jp » DEVELOPER STAGE » 特集 » いますぐ使えるOpenID » 第1回 OpenIDサービスを利用して,OpenIDの仕組みを理解する

いますぐ使えるOpenID

第1回 OpenIDサービスを利用して,OpenIDの仕組みを理解する

この記事を読むのに必要な時間:およそ 4 分

はじめに

Yahoo!やYahoo!JapanがOpenIDサービスの提供を始めたり,MixiがOpenID対応を表明したりと,最近OpenIDについてのニュースを耳にするようになりました。 ところが,OpenIDという言葉は知っていても,実際に使ったことのある方はまだほとんどいないのではないでしょうか。

OpenIDによる認証を提供するサービスが増え,インターネット上でアカウントを持つ人の多くがOpenIDを利用できるようになっています。 さらにOpenIDを扱うPerlやRubyなどのライブラリも充実してきています。 このように,OpenIDを使うための環境は整ってきていると言えます。 そこで,本連載では実際にOpenIDを使ってみながら,その仕組みについて解説していきます。 同時に,仕様では見えてこないOpenIDを使う上でのコツも,説明していければと思います。

OpenIDとは

OpenIDとは,いったい何でしょうか。 OpenIDの公式サイトには,以下のように書かれています。

OpenID is a free and easy way to use a single digital identity across the Internet.

「1つのIDをインターネット上で無料かつ簡単に使うための仕組み」ということですが,端的に言うとYahoo!やはてな等のアカウントを使って,他のサイトにログインすることができるようになります。 「IDを1つにする」という考え方は以前からありましたが,OpenIDはそれまでの考え方と何が違うのでしょうか。

大きな違いは認証サービスが分散していることです。

集中型の認証APIと分散型のOpenID

WebではBlogやWebメールなどの,様々なサービスが提供されています。 これらのサービスを使うためには,それぞれに登録したIDとパスワードを使って認証していることと思います。 ですが,利用するサービスが増えると,サービスごとのユーザ登録が面倒になったり,IDとパスワードが増えて覚えきれなくなるという問題が発生します。

この手の問題は古くから存在しており,イントラネットなどの利用者が限定される環境では,WindowsのActive Directoryなどのようにディレクトリを用いて利用者の情報を集中的に管理する方法が採用されています。

Webでも,次に挙げるように,いわゆる「認証API」と呼ばれるユーザ認証の仕組みが各社から提供されています。

  • TypeKey認証
  • はてな認証API
  • livedoor Auth
  • JugemKey認証API

これらは,それぞれのサービス提供者のユーザIDで,他のサイトへログインするための仕組みです。 しかし,不特定多数の利用者やサービス提供者が存在するWebでは,認証というサービスの基盤に関わる機能を特定のサービスに任せることへの心理的な抵抗感があり,広く普及するところまでは至っていません。 かといって,複数の認証APIに対応するためには,それぞれの認証APIとのインタフェースを作り込む必要があり,そのためのコストがかかってしまいます。 そこで,特定の認証サービスに依存しない仕組みとして,OpenIDが着目されるようになってきました。

従来の集中型の認証APIと異なり,OpenIDでは複数の認証サービスが存在します。 OpenIDに対応した認証サービスを提供しているところであれば,どの認証サービスでも使用できます。 複数の認証サービスが混在できるように,OpenIDではユーザIDとしてURLを用います。 例えば,筆者のはてなでのOpenIDアカウント名は以下のようになります。

http://www.hatena.ne.jp/kmachu/

従来の認証APIの場合:

図1-1

OpenIDの場合:

図1-2

ただし,すべての認証サービスですべてのOpenID対応サイトにログインできるとは限りません。 対応サイトによっては,受け入れる認証サービスを制限しているところもあります。

また,OpenIDはユーザを認証するための仕組みを提供しますが,認証されたユーザが信頼できるかどうかは別問題です。 特に,誰でも認証サービスを提供できるという仕組みであることから,認証サービスによって信頼性はまちまちです。 ユーザ登録時にCAPTCHAやメールの到達確認を行うことでbotやスパマーの登録を防いでいる認証サービスもあるでしょうし,誰でもすぐに登録できてしまう認証サービスもあるかもしれません。 今のところ,どの認証サービスを信用するかは,利用者やOpenID認証を受け入れるサイト次第と言えます。

OpenIDの主な用語

最低限覚えておきたい,OpenIDで登場する用語は次のとおりです。より詳しくは,OpenIDの仕様書@ITでのOpenIDの仕様と技術などを参照してください。

OP(OpenID Provider)
OpenIDによる認証サービスの提供者です。
RP(Relying Party)
OpenIDによる認証を受け入れるサイトです。
Claimed Identifier
利用者のOpenIDアカウント名。本連載では便宜的に「OpenIDアカウント」と呼びます。

OpenIDでの認証の仕組み

認証サービス(OP)のOpenIDアカウントで別のサイト(RP)へログインするときの流れについて説明します。

OpenIDでのログイン

図2

  1. 利用者はRPにアクセスし,自身のOpenIDアカウント(Claimed Identifier)を入力します。
    ※後述しますが,利用者はClaimed Identifierの代わりにOPのURL(OP Endpoint)を入力することもあります。これらを総称して,ユーザ提供識別子(User-Supplied Identifier)と呼びます。
  2. RPは入力されたOpenIDアカウントを元に,OPを探します。
  3. RPはOPとの間で,共通鍵を交換します。この鍵はOpenIDメッセージの改ざん防止に使われます。
  4. RPは利用者をOPへとリダイレクトし,利用者の認証を要求します。
  5. 利用者はOPにログインしていなければ,IDとパスワードでOPへログインします。OPはOpenIDアカウント名をRPへ通知していいかどうかを利用者に確認します。
  6. 利用者がアカウントの通知に同意すれば,OPは利用者をRPへとリダイレクトして,認証結果をRPへと通知します。
  7. RPは受け取った認証結果に含まれるClaimed Identifierで,利用者を認証します。

流れだけを見るとなんだか複雑そうに見えるので,実際のサービスで試してみることにしましょう。

著者プロフィール

松岡浩平(まつおかこうへい)

NTTコムウェア株式会社にて,オープンソースを活用した認証システムの開発を担当しています。ここ2年は,情報セキュリティ大学院大学に通学しながら,OpenIDを使った認証システムについて研究していました。

トラックバック

  • mixi OpenID

    昨年から手つかずだったOpenID認証を色々と実験中です、ライブラリは OpenID Enabled の PHP OpenID Library が有名で資料も多いのでこれを利用してみましたが、とりあえず以下の国内大手のOpenIDプロバイダを使っての認証実験は成功しました。
    Yahoo! JAPAN
    hatena
    livedo...

    Tracked : #1  oneoctave (2009/11/06, 19:14)

コメント

コメントの記入

G-CLOUD

ピックアップ

エンジニアパワーアップ講座 ~システム基盤を活用するための基礎知識~

イマドキのエンジニアに要求されるさまざまな知識や能力。これらを効率よくキャッチアップしていくヒントをいろいろな視点から取り上げます。

LinuxCon Japan/ Tokyo 2010の歩き方

9月開催「LinuxCon Japan/ Tokyo 2010」の見どころと楽しみ方を,メインスピーカーの皆さんに自ら紹介していただきましょう。

自分で考えた家が現実に!? ~「3DマイホームデザイナーLS3」で実現する,普請道楽のススメ

「3DマイホームデザイナーLS3」を使えば,パズル感覚の簡単操作で理想の住まいを立体的にシュミレートすることができます。

手軽に使える専用サーバ「さくらのマネージドサーバ」を徹底チェック

1台のサーバを占有して使うことができる「さくらのマネージドサーバ」に新たに加わった「Core 2 Duoプラン」の特徴と魅力をお伝えします。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた情報や魅力を多角的に紹介します。

その他の連載

なぜPHPアプリにセキュリティホールが多いのか?

「PHPのセキュリティは最悪だ」とよく聞きませんか? 本連載では,そのあたりの本当のところを探りながら,Webアプリケーションのセキュリティ対策について考えます。

Google Chrome版Firebug:デベロッパーツール取扱説明書

WebKitのWebInspector(デベロッパーツール)は飛躍的な進化を遂げています。多機能化するデバッガーの使い方とノウハウを詳細に解説します。

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

memcachedの活用と運用 実践編

本特集では,memcachedを利用している方に向けて,実践的なテクニックを伝授します。

LinuxCon Japan/ Tokyo 2010の歩き方

9月開催「LinuxCon Japan/ Tokyo 2010」の見どころと楽しみ方を,メインスピーカーの皆さんに自ら紹介していただきましょう。

機械学習 はじめよう

機械学習は,様々な分野で使われています。本連載では,「理論編」と「実践編」に分けて,機械学習の技術概念やコードの実装方法を紹介していきます。

Webデザイン最新トレンド ~イマドキUIのつくりかた

“今っぽいWebサイト”を作るには何が大切か? Webデザインのポイントと実際の作り方をサンプルをまじえて紹介します。

シモダテツヤのIT四コマふんわり劇場

IT界を揺るがす四コマ漫画家“シモダテツヤ”が,毎回楽しい四コマ漫画とふんわりしたコラムでお届けしていきます!

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス

最近のコメント