この文書は、BugTrack/98 をリネームして、再構成しています。
TypeKey を利用した認証について
設定
TypeKey ID の取得
以下の URL にアクセスし、必要事項を入力の上、確認通知がメールで届くので、
そのメールに従ってアクセスすれば、登録が完了となる。
自サイトで TypeKeyトークンが利用できるようにする
以下の URL にアクセスし、TypeKey にログインする。
すると画面下部に、以下のような箇所がある。

- 自サイトの登録
2の欄に、自サイトの URL を、最大5つまで登録ができる。
自分のTypeKey ID で5つまで、自サイトが持てるということになる。
例えば、http://localhost/
と http://localhost/plus/
がある場合、
http://localhost/
を登録すれば、下位ディレクトリも同一のTypeKeyトークンの
利用ができるようです。TypeKeyトークンを制限したいようなことが無い場合には、
上位ディレクトリを指定しておけば、1つの登録で済みます。
下位ディレクトリ毎に管理者を分けるような運用の場合は、逆に下位ディレクトリまで
指定して管理することになると思います。
- auth_api.ini.php (旧: auth.ini.php)
/////////////////////////////////////////////////
// Auth API
$auth_api = array(
// TypeKey
'typekey' => array(
'use' => 0,
'site_token' => 'xxxxxxxxxxxxx',
'need_email' => 0,
),
);
- use
TypeKey 認証の機能を有効にする場合には、1 を設定する。
省略値は、0(ゼロ)で機能が無効になっています。
- site_token
1で表示されている文字列を転記する。
- need_email
認証時に、電子メールの情報を必要とするかどうか。指定もできるが、まだ利用の目処はたっていない。電子メールの情報を送信して欲しい場合は、1 を指定する。
この場合、相手が電子メールの情報を送信してくれない場合は、Plus! サイト上、認証されない。
利用にあたっての前提環境
- pukiwiki.ini.php
// PLUS_ALLOW_SESSION - Allow / Prohibit using Session
define('PLUS_ALLOW_SESSION', 1);
- 必要なPHPエクステンション
以下のPHPエクステンションが有効でないと、DSAによる署名の検証ができないので、稼動しません。管理権限でログインすれば、phpinfo プラグインを利用することで確認ができます。以下のような箇所のいずれかが見つかれば利用可能です。
- gmp
- bcmath

TypeKey による認証利用
typekey プラグインにより、TypeKey による認証が行えます*1。
#typekey
として、SideBar などに組み込み利用ください。
技術的な整理
以下からは、TypeKey
認証を利用した
実装を行う上での仕方など、内容を整理しておくために残しています。
API
TypeKey API
については、
このページに詳細が書かれています。
署名の検証
署名を検証するためには、DSA
という
署名用のアルゴリズムを実装する必要があります。
このソースの場合は、PHP5 でしか稼動しないため、PHP4 でも稼動するように、
一部、ソースを改修して利用することになると思います。
- 修正BSDライセンス
- 必要なPHPエクステンション
- gmp
- bcmath
Fedora Core 6 の場合は、php-bcmath-5.1.6-3.1.fc6 が最新(2006-11-19 現在)。
実装
認証管理
サイトにおいて、TypeKey によって認証を受けたことを管理するのは、
そのサイトの責任において行う必要がある。セッション管理を有効にし、
認証済ステータスを管理するような処理を行う。
- 認証情報に、メールアドレスなどが含まれる場合もあるため、共通鍵で暗号化して利用するような実装を施しておく。
- JavaScriptでの実装および、PHPでの実装があり、クライアント・サーバで共通して利用できる*2ことから、DES
による実装を採用する予定。
- Paul Tero氏には、ソースの再配布について確認し問題無しとの返事を頂戴しています。純粋なGPLでも、BSDライセンスでもなく、単なるOSSのようなので、Plus! でのライセンス上、微妙なところ。
- DESのコード
役割
TypeKey で認証を受けたユーザも、サイト内では見做し認証者という位置付けとして
判定できるようにする。
書き込み制御
せっかく認証を受けても、WikiWiki という特性上、誰でも書き込める状態となるため、
PKWK_READONLY の状態で、TypeKey による認証を有効にした場合に限り、comment や
pcomment プラグインなどでの書き込みが可能なような制御を行う。
この場合でも、ユーザ名などの変更ができないような制御を行う。