あなたのサイトをOpenID対応にしている2行の意味OpenIDの仕様と技術(2)(2/3 ページ)

» 2007年08月10日 00時00分 公開
[山口徹サイボウズ・ラボ株式会社]

OpenID対応サイトを作る際のユーザビリティ

 次はいよいよ、OpenID authentication protocolの内側に迫っていきます。

 ConsumerサイトがOpenIDに対応していることをEnd Userに示すために、OpenIDでログインできるフォームに対して、下記のような表示を行うのが望ましいです。

図 ログインフォームの例 図 ログインフォームの例

 仮に次のようにHTMLを記述したならば、

<form id="openid_form"  action="./login.cgi" method="post">
  <fieldset>
    <legend>Enter your OpenID URL</legend>
    <input type="text" id="openid_url" ≪name="openid_url"≫ value="" />
    <input type="submit" id="openid_url_submit"  name="openid_url_submit" value="LOGIN" />
  </fieldset>
</form>

 textフィールドに対するスタイルを下記のようにして、OpenIDのロゴを表示するようにします。

input#openid_url {
   text-indent: 18px;
   background-image:  url("http://sample.openid-idp.com/img/openid_logo.png");
   background-repeat: no-repeat;
   background-position: left center;
}

 また、ブラウザのオートコンプリートを利用するため、OpenIDに対応するConsumerサイトのフォームフィールドではname属性値にopenid_urlと統一した名前を付けることが推奨されています。

OpenIDでの認証手続きの流れ

 さて、具体的にOpenIDによる認証手続きの流れを追っていきましょう。まず初めに全体の流れを列挙します。

  1. ConsumerはEnd Userから送られてきたClaimed IdentifierにあるHTML文書を実際にパースし、openid.delegateが存在すれば適切に処理しつつ、openid.serverの値、すなわちIdPのエンドポイントURLを入手します。
  2. ConsumerはIdPとの間で、Claimed Identifierの認証手続きを行う前に、手続きの仕方をsmart modeかdumb modeのいずれかから選ぶことができます【注2】
    smart modeとは、事前にConsumerとIdPの間で共通鍵を共有し、信頼関係を成立させておくモードです。
    一方、dumb modeは事前に共通鍵を共有することなく、Claimed Identifierの認証手続きを行いますが、smart modeと比べて一連の手続きの最後に1つ余計に処理が増えます。

【注2】

仕様においてはsmart modeを選択することが強く勧められています


  1. ConsumerはEnd UserのUser-Agentを特定のクエリーパラメータを付与したIdPのエンドポイントURLに対してリダイレクトさせます。
    ここでもIdPに対する問い合わせが2通りあります。Ajaxスタイルの非同期通信による問い合わせ方式と、実際に画面が遷移しユーザーが都度必要ならばIdPの認証手続きページにおいて、ログインしたり情報の開示の可否を選択できる方式です。
    いずれの手続きも正しく完了した場合、IdPは事前にConsumerが指定したURLにEnd UserのUser-Agentをリダイレクトさせます。
  2. ConsumerはEnd UserのUser-Agent経由で受け取ったIdPからのレスポンスを受け取ります。
    ここで最初にdumb modeを選択していた場合は、受け取ったデータの妥当性をConsumerは直接IdPに問い合わせます。

 これらをまとめると、

  • Consumerは、smart modeとdumb modeという、ConsumerとIdP間で事前に信頼関係を結ぶか否かで変わる2つのモードを選択できる。
  • Ajaxスタイルの問い合わせと、画面遷移する問い合わせの2パターンが用意されている。

となります。

図3 smart mode時の認証フロー

 一連の認証手続きはIdPのエンドポイントURLに対して、フェイズに応じたopenid.modeという識別子の値を変えてリクエストをやりとりすることによって行われていきます。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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