EMIT-Japan WebCT レター

  • 登録・解除
  • プライバシーポリシー

【管理者向けミニティップス】WebCTのカスタム認証(WOAK)

WebCTの特徴として、様々な認証ソースによる認証を実装している事が挙げられますが、今回はWebCTのカスタム認証に関して簡単に説明いたします。カスタム認証を利用すると自分で好みの認証方法をCで記述する事が可能になります。(なお、このツールキットはInstitutonライセンスでのみ動作いたします。予めご了承ください)

カスタム認証開発キットの入手

このキットは WebCT Open Authentication Kit (WOAK)と呼ばれ、WebCT社のページからダウンロードする事が出来ます。
WebCT 4.0をお使いの方は以下のリンクより該当するライセンス側のリンクをクリックし、キットを入手してください。(IDとしてコンタクトパーソンのメールアドレス、およびパスワードとしてライセンスキーが求められます)

4.2をお使いの方は以下のサイトよりダウンロードしてください。

(IDとしてコンタクトパーソンのメールアドレス、およびパスワードとしてライセンスキーが求められます)

今回は例としてLinux用のツールキットで簡単な利用方法を示します。SolarisやWindowsでも同じ要領で動作させる事が出来ますが、いずれにしてもコンパイラが必要となります。

アーカイブの展開、およびコーディング

まず、ダウンロードしたアーカイブを展開します。
展開したディレクトリにcdすると以下のようなディレクトリ構成になっているのがわかります。

|-bin/:
|-compile/:
|   |-configure/:
|   |   |-freebsd4
|   |   |-linux-libc6
|   |   |-redhat7.1
|   |   `-solaris-sparc
|   |-objects/:
|   |-targets/:
|   |   `-custom_auth_so.mk
|   `-Makefile
|-ticket/:
|   |-custom_auth.c
|   `-custom_auth.h
`-README

まず、ticketにcdします。このcustom_auth.cというファイルに実際の処理を書いていく事になります。

コメント行を省くと実際には以下のような簡単なCのソースコードになっているだけです。

#ifdef WIN_NT
#include <windows.h>
#endif

#include "custom_auth.h"

#define AUTH_VALID    0
#define AUTH_FAILED   -1
#define AUTH_DECLINED -2

int WINAPI
user_is_authentic_other(const char *username,
                        const char *password)
{
    return AUTH_DECLINED;
}

このuser_is_authentic_otherという関数の引数としてユーザ名(username)、パスワード(password)が入ってくるので、この中で適当に処理して、最終的にAUTH_VALIDAUTH_FAILEDAUTH_DECLINEDのいずれかをreturnさせるようにします。
それぞれの説明はソースコード内のコメントを見ていただくとして、現在はAUTH_DECLINEDを単にreturnしているだけなので、これはいかなる認証も受け付けない状態になっています。これをAUTH_VALIDに変更してみましょう。こうする事でどのようなユーザID/パスワードの組み合わせであっても認証が成功するようになります(もちろん、WebCTのグローバルDBにWebCT IDのエントリがある事が条件ですが)。

/* (略) */
user_is_authentic_other(const char *username,
                        const char *password)
{
    return AUTH_VALID;
}

実際にはもっと複雑な処理となるでしょうが、今回はテストなのでこれで終了です。

コンパイル

では、先程記述したcustom_auth.cのソースをコンパイルします。コンパイルに当ってはmake、gccなど最低限の開発環境が必要になるので注意してください。

まずticketディレクトリからcompileディレクトリにcdします。そこで単純にmakeとするだけです。

$ make
gcc -c -o objects/custom_auth.o  ../ticket/custom_auth.c
mkdir -p ../bin
gcc -shared -Xlinker -z -Xlinker nodelete -o ../bin/custom_auth.so objects/custom_auth.o 
strip ../bin/custom_auth.so
chmod 0775 ../bin/custom_auth.so

するとこのように../bin/以下にcustom_auth.soというファイルが生成されます。このファイルをインストールします。

custom_auth.so のインストール

custom_auth.soのインストールといっても特に難しい作業ではありません。
以下のディレクトリに移動orコピーさせるだけで完了します。

$installdir/webct/webct/generic/bin/ 

$installdirはWebCTをインストールしたディレクトリを指します。

管理者インタフェースの設定

管理者インタフェースにログインして [ 設定 ] ボタンを押します。その後ユーザ認証の項目のユーザの認証方法の部分を設定します。日本語化の関係で4.0の場合は「認証方法をカスタマイズします.」、4.2の場合は「独自の認証方法.」となっていますが、両者とも同じカスタム認証の事を指しています。同じカスタム認証の事を差しています。ここではテストとして認証源をカスタム認証に限定します。以下のように他の認証方法を「しない」に設定し、カスタム認証の項目を「最初」に設定すれば良いでしょう。

後はIDとしてグローバルデータベースに存在するユーザID、パスワードに何でも良いので適当な文字列を入れる事で認証が通る事を確認します(なお、空のパスワードは通らないようです)。

以上がカスタム認証の概要になります。今回は単純なテストという事で何のロジックも無しに常に認証が通るようなコードになっています。実際にはCのソース部分さえ書いてしまえばLDAP、ActiveDirectory以外の認証源(例えば他のDBMSやプレインテキスト等)を利用する事が出来ます。

文責: 福山貴幸
(2005年 6月)