エンジニアブログ

エンジニアブログ
Movable Type プラグイン

Basic認証のユーザーと連携してMTにログインする方法:BasicAuthAutoCompleteLogin

森山 2009年08月26日


MTの管理画面にBasic認証をかけている人もいると思いますが、その場合Basic認証でID/PWを入力してまたmt.cgiでID/PWを入力するという手間が2回発生します。

今回、Basic認証でログインしたユーザーがMTに自動ログインするやりかたをご紹介します。やり方はふたつあります。

1)「BasicAuthAutoCompleteLogin」プラグインを導入する
2)mt-config.cgiにて変更を加える

まず、1)について説明します。
やり方は簡単です。弊社が開発したプラグイン「BasicAuthAutoCompleteLogin.0.02.zip」をダウンロードして、解凍したものをMTのpluginsディレクトリ直下にアップロードしてください。

次にmt.cgiにBasic認証をかけます。
この時、htpasswdに記載するユーザーはMTのユーザー名/パスワードで作成します。

以上で完了です。mt.cgiにアクセスするとまずBasic認証の窓が表示され、ID/PWを入力するとMTのログイン画面が表示されます。
この時、MTのログイン画面にはすでにユーザー名/パスワードが入力されているので、あとは「サインイン」ボタンをクリックするだけでログインができます。

※注意点
BasicAuthAutoCompleteLoginプラグインは、Basic認証で入力した情報を取得してMTのログイン画面に値を入れているだけなので、MTのユーザーが自分でログインのパスワードを変更すると、htpasswdも変更が必要になります。

2)についてですが、最初にMTのユーザー情報を確認します。
以下は、データベースのmt_authorテーブルの一部です。


mysql> select author_id,author_auth_type from mt_author;
+-----------+------------------+
| author_id | author_auth_type |
+-----------+------------------+
| 1 | MT |
| 2 | MT |
+-----------+------------------+
5 rows in set (0.00 sec)


「author_auth_type」が「MT」となっていますが、これは通常のMTのログイン画面を利用してサインインするユーザーになります。
Basic認証と連携するユーザーは、「author_auth_type」が「BasicAuth」でなければなりません。
そのためデータベースを直接編集します。


mysql> UPDATE `mt_author` SET author_auth_type = 'BasicAuth' WHERE author_auth_type = 'MT';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> select author_id,author_auth_type from mt_author;
+-----------+------------------+
| author_id | author_auth_type |
+-----------+------------------+
| 1 | BasicAuth |
| 2 | BasicAuth |
+-----------+------------------+
2 rows in set (0.00 sec)


次に、mt-config.cgiに「AuthenticationModule BasicAuth」と一行追加します。

最後に、mt.cgiにBasic認証をかけます。
htpasswdに記載するユーザー名は、MTに登録されているユーザー名にしてください。
パスワードは任意で問題ありません。

mt.cgiにアクセスすると最初にBasic認証が表示され、ID/PWを入力するとそのままMTの管理画面が表示されるはずです。

ユーザーの登録ですが、MTの管理画面から普通にユーザーを追加し、権限を割りあててから、htpasswdにそのユーザーを追加してください。

BasicAuthモードのユーザーのパスワードは、htpasswdで管理されているため、MTの管理画面上ではパスワードの変更や再発行等はできません。またログアウトボタンもなくなります。

このBasicAuthについて詳しく知りたい方は、開発者向けのドキュメントをご覧ください。