Bassman

INDEX

Bassmanとは?

Bassmanは簡易Basic認証をするためのISAPI Filterです。
簡易Basic認証とはIISにおいてWindowsユーザーを作らずに行う基本認証です。
ユーザーは設定ファイルやデータベースにて指定ができます。

動作環境
IIS 5.0, 5.1, 6.0 and 7
パッケージ内容
Bassman.dll
ISAPI Filter本体
Bassman.setting
設定ファイル
注意事項
  1. 本ソフトウェアの利用は良識の範囲内でお願い致します。
  2. 本ソフトウェアの利用による損害の保証はお受けできません。
  3. 本ソフトウェアの利用は楽しんで行っていただきますようお願い致します。
インストール方法
  1. "Bassman.setting" を目的の設定に編集。
  2. "Bassman.dll" を目的のWebサイトのISAPIフィルタに設定。
設定ファイルの書き方

設定ファイルはXMLで記述してください。

<?xml version="1.0" encoding="UTF-8"?> <bassman> <area url="/member/.*" name="MemberAREA"> <user name="yamada" passwd="1234"/> <user name="satou" passwd="2345"/> <user name="suzuki" passwd="3456"/> </area> <area url="/admin/.*" name="AdminAREA"> <user name="kinoshita" passwd="1234"/> </area> <area url="/user/.*" name="UesrAREA"> <db connection="Provider=SQLOLEDB;Server=xxx;Database=xxx;User ID=xxx;Password=xxx" sql="select id from TUser where name=? and passwd=?" /> </area> </bassman>
説明
  • "/member/" 配下へのアクセスはBasic認証で "yamada", "satou", "suzuki" のみ。
  • "/admin/" 配下へアクセスはBasic認証で "kinoshita" のみ。
  • "/user/" 配下へアクセスはBasic認証でデータベース "xxx" のテーブル "TUser" にいるユーザーのみ。
設定リファレンス
<bassman/>

Bassman設定のルート要素。

属性
reloadkey

設定ファイルをリロードする際のキー。
文字 '/' から始まる文字列を指定して下さい。
キーはばれないよう、複雑なものにして下さい。
キーを指定しない場合、もしくは空文字列の場合は動作中の設定ファイルのリロードはできません。
キーを指定しない場合はサーバーの再起動やアプリケーションプールのリサイクルによって設定を反映してください。

<?xml version="1.0" encoding="UTF-8"?> <bassman reloadkey="/soeu73nc70zzz"> ... </bassman>
説明
設定ファイルを変更した際、
http://yourhostname/soeu73nc70zzz
にアクセスすることで動作中に設定をリロードできます。
子要素
  • <area/>
<area/>

認証エリアの定義。
アクセスしてきたURLとurl(属性)がマッチした際に認証をかけます。
<area/>は上から順に走査され、url(属性)の正規表現がマッチしたところで走査を終了し<user/>の認証を行います。
<user/>が一つもない<area/>を定義するとBassmanで認証をかけないエリアを作ることができます。
あるエリアだけIISに認証を任せたい場合などに利用できます。

※注意事項※
url(属性)で指定したWebフォルダの認証方法(*1)に匿名アクセス以外のチェックが入っていると、
ブラウザからアクセスした際に認証が二重で行われてうまく動作しません。
Bassmanに認証を任せるWebフォルダは匿名アクセス*のみ*にチェックを入れる必要があります。
(*1:IISの設定ダイアログの「匿名アクセスおよび認証コントロール」の「編集」)

属性
url

アクセスしてきたURLに反応したい正規表現。
正規表現はPerl互換(Boost.Regex Perl Regular Expression Syntax)で記述して下さい。

<?xml version="1.0" encoding="UTF-8"?> <bassman reloadkey="/1234"> <area url="/member/.*" name="MemberAREA"> <user name="m001" passwd="1234"/> <user name="m002" passwd="2345"/> <user name="m003" passwd="3456"/> </area> <area url="/admin/.*" name="AdminAREA"> <user name="a001" passwd="1234"/> </area> <area url="/realbasic/.*"/> </bassman>
説明
以下のようなアクセス、
http://yourhostname/member/index.html
をすると、Basic認証がかかり、"m001","m002","m003" のみがアクセスできます。
以下のようなアクセス、
http://yourhostname/admin/index.html
をすると、Basic認証がかかり、"a001" のみがアクセスできます。
以下のようなアクセス、
http://yourhostname/realbasic/index.html
をすると、Bassmanの認証はかかりませんのでIISネイティブの認証をかけたりすることができます。
name

エリアの名前を指定します。
名前は Basic認証 の "realm" に利用されます。

子要素
  • <user/>
<area/> - <user/>

認証ユーザーの定義。
ユーザーは複数指定することができます。
認証されたユーザーの名前はCGIなどからサーバー環境変数 "HTTP_X_BASSMAN_USERNAME" で取得可能です。

属性
name

ユーザー名。

passwd

パスワード。

子要素
[なし]
<area/> - <db/>

ユーザーをデータベースから引くようにします。

<?xml version="1.0" encoding="UTF-8"?> <bassman reloadkey="/1234"> <area url="/user1/.*" name="UesrAREA1"> <db connection="Provider=SQLOLEDB;Server=xxx;Database=xxx;User ID=xxx;Password=xxx" sql="select id from TUser1 where name=? and passwd=?" /> </area> <area url="/user2/.*" name="UesrAREA2"> <db connection="Provider=SQLOLEDB;Server=xxx;Database=xxx;User ID=xxx;Password=xxx" sql="select id from TUser2 where name=@name and passwd=@passwd" sql_param_name="@name" sql_param_passwd="@passwd" /> </area> </bassman>
説明
以下のようなアクセス、
http://yourhostname/user1/index.html
をすると、Basic認証がかかり、データベース"xxx"のテーブル"TUser1"に存在するユーザーのみがアクセスできます。
以下のようなアクセス、
http://yourhostname/user2/index.html
をすると、Basic認証がかかり、データベース"xxx"のテーブル"TUser2"に存在するユーザーのみがアクセスできます。
認証が通った場合、"TUser1.id"列や"TUser2.id"列はサーバー環境変数 "HTTP_X_BASSMAN_DB_ID" でCGIなどから取得可能です。
属性
connection

データベースへの接続文字列を指定します。

sql

ユーザーを引くSQL文を指定します。
このSQL文によってselectされた列はCGIなどからサーバー環境変数 "HTTP_X_BASSMAN_DB_*" で取得可能です。

sql_param_name

"sql" によって指定されるSQL文のうち、認証ユーザー名を表すパラメータ名を指定します。
指定しない場合の既定値は 0 です。

sql_param_passwd

"sql" によって指定されるSQL文のうち、認証ユーザーパスワードを表すパラメータ名を指定します。
指定しない場合の既定値は 1 です。

子要素
[なし]
更新履歴
2008/12/24
  • Version: 1.0.0.0
2009/06/19
  • Version: 1.2.0.0
  • <area/>は上に書かれたものが優先になるように改良
  • 認証しないエリアを指定できるように改良
2009/07/06
  • Version: 2.2.0.0
  • 認証ユーザーをDBから引けるように改良
2009/12/02
  • Version: 2.2.1.0
  • パスワードの長さによって動作に不具合があった問題を解消