Movable Typeで作成したBlogをOpenIDに対応させる | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

OpenID - URLでユーザー認証する「OpenID」の発行サービス - で紹介したOpenIDを利用して、自分が管理しているMovable TypeのBlogをOpenIDに対応するようにカスタマイズしてみます。

カスタマイズは、以下の2点です。


1. Movable Typeで作成したオリジナルのBlogのURLをOpenIDで利用できるようにする。

2. OpenIDに対応しているサービスに対して、自分が管理しているMovable Typeの管理ユーザーのIDとパスワードで

  利用できるようにする。


説明にあたり、「Movable TypeでオリジナルBlogを作る 【環境設定編】 」で記載したシステム構成

(OSからMovableTypeのアプリケーション、スタティックディレクトリ等)と同様の環境を想定して

説明します。

また、自分で管理しているMovable TypeのBlogのURLを「http://mt.hogehoge.com 」とします。



Movable Typeで作成したBlogのURLをOpenIDで利用可能にする


これは、本来OpenIDで取得したID(例えば「http://hogehoge.openid.ne.jp 」)を利用するのではなく、自分が管理しているBlogのURL(例えば「http://mt.hogehoge.com 」)をIDとして、サービスを利用したいと言う事です。


1. まず自分が管理しているMovable Typeの管理サイトにログインします。



2. 管理サイト内から、Blogトップページのテンプレート編集します。

  対象となるBlogの「テンプレート」メニューを開きます。

  次に、テンプレートメニュー内から「メインページ」を選択して開きます。



Mt-Menu



3. メインページのテンプレートの<head>タグ内に下記を追加します。


<link rel="openid.server" href="http://www.openid.ne.jp/user/auth" />
<link rel="openid.delegate" href="http://XXXXX.openid.ne.jp" />

  ※ XXXXXは、取得したOpenIDを設定します。


MT-menu



4. 編集後に「保存と再構築」ボタンより、テンプレートの保存及びサイトの再構築を行います。

  正常に反映されているかどうかは、Blogのトップページのソースでも眺めてみれば分かります。



5. OpenID対応サービス(choixLiveJournal )に、自分のBlogのURL(ここでは「http://mt.hogehoge.com 」)で

ログインします。


以上で、オリジナルのOpenIDを利用する事ができるわけですが、何故OpenIDサービスで取得していないURLで認証が可能かと言うと、<head>タグで埋め込んだ「openid.delegate」が代理として認証を行っているわけです。

つまり、カスタマイズしたID(http://mt.hogehoge.com )の裏ではオリジナルのID(http://hogehoge.openid.ne.jp )によって認証が行われていると言うわけです。



自分が管理しているMovable Typeの管理ユーザーのIDとパスワードで利用できるようにする



これは、OpenID用のIDを持っていなくても、自分の管理しているMoavble TypeのURLをIDとしてOpenIDに対応したサービスを利用すると言うものです。


1. まずは、OpenID対応用のプラグインをダウンロード します。

  ※ OpenID Server for Movable Type



2. ダウンロードしたPC上でファイルを解凍し、「plugins」フォルダ内にある「openid-server」をMovableTypeが動作している

  サーバーにアップロードします。


※ フォルダごとのFTPができない場合は、zip形式でアップロードしてしまってunzipコマンドで解凍するか「.tar.gz」形式で

  再圧縮しなおしてからアップロードしてください



3. アップロードしたフォルダをMovableTypeのアプリケーションディレクトリにある「plugins」ディレクトリ以下に移動させます。

 

例)

$ mv openid-server /home/weblog/cgi-bin/plugins

※ 移動後に「openid-server」の権限や所有者は、「plugins」ディレクトリ内にあるその他のディレクトリと同様に設定

  しておきます。



4. 管理サイトにログインし、システムメニューの「投稿者」の「ウェブサイトURL」を自信のBlogのURLに設定します。


MT-Entry



5. 管理サイト内から、Blogトップページのテンプレート編集します。

  対象となるBlogの「テンプレート」メニューを開きます。

  次に、テンプレートメニュー内から「メインページ」を選択して開きます。



Mt-Menu


6. メインページのテンプレートの<head>タグ内に下記を追加します。


<link rel="openid.server" href="http://mt.hogehoge.com/cgi-bin/plugins/openid-server/server.cgi" /> 

※ 3. でpluginsディレクトリに移動させたserver.cgiへのパスを指定します。

  事前にこのパスへアクセス可能なことを確認しておきます。



7. 編集後に「保存と再構築」ボタンより、テンプレートの保存及びサイトの再構築を行います。

  正常に反映されているかどうかは、Blogのトップページのソースでも眺めてみれば分かります。



8. OpenID対応サービス(choixLiveJournal )に、自分のBlogのURL(ここでは「http://mt.hogehoge.com 」)で ログインします。



9. 自信が管理するMovable Typeの管理画面へログイン状態でない場合は、管理画面のログイン画面が表示されます。


ここで、通常利用している管理サイト上のIDとパスワードを入力します。



10. 認証が成功すると、そのサービスが利用可能になります。


ここまでやると、OpenIDは「認証」自体をサービスとして提供しているのではないのだなと感じました。

今回のところでは、自身のMovable Type(のプラグイン)が認証サーバーになって、認証が成功したこのユーザーはある認証サーバーを通ってますよ、と別のサービスに保障している。


認証が成功しているからIDが保障されていると言う逆の考え方で、IDが保障されているから認証も成功(等価に等しい)していると言うような考え方でしょうか。

後者の方は、一見危険にみえますがたとえ認証が成功したからといって当人であると言う保障はどこにもないわけで、どこまで信頼するかで成り立っているのかと言う点が良く理解できました。

確かに重要な情報を扱うシステムでは、このようにはいきませんが。