2011年5月31日火曜日

Basic および Digest 認証用 HTTP モジュールについて

このエントリーをはてなブックマークに追加
Mono で提供されている ASP.NET HTTP モジュールについてメモ。


Mono 2.8.1 環境で、Basic および Digest 認証用 HTTP モジュールを試してみた。

上記リンク先下半分に記載されている情報を参考にした訳だが、不備もあったりしたので、ちょっと修正したイカの設定で試してみた。

Basic 認証

web.config: 必要な部分を抜粋
<?xml version="1.0"?>
<configuration>
  <system.web>
    ...
    <authentication mode="None">
    </authentication>
    <authorization>
      <allow roles="testers"/>
      <deny users="*" />
    </authorization>
    ...
    <httpModules>
      <!-- For Basic Authentication -->
      <add name="BasicAuthenticationModule" type="Mono.Http.Modules.BasicAuthenticationModule, Mono.Http, Version=2.0.0.0, PublicKeyToken=0738eb9f132ed756" />
    </httpModules>
    ...
  </system.web>
  <appSettings>
    <!-- Set the value to "Basic" or "Digest" -->
    <add key="Authentication" value="Basic" />
    <!-- For Basic Authentication -->
    <add key="Basic.Users" value="/path/to/users.xml" />
    <add key="Basic.Realm" value="My Realm" />
  </appSettings>
</configuration>

users.xml: こんな感じ
<?xml version="1.0" encoding="utf-8"?>
<users>
  <user name="nobita" password="password">
    <role name="users" />
  </user>
  <user name="sta" password="password">
    <role name="admins" />
    <role name="testers" />
    <role name="users" />
  </user>
  <user name="tiger" password="password">
    <role name="testers" />
    <role name="users" />
  </user>
</users>


MonoDevelop 2.4.1 上で、ASP.NET プロジェクトを作成して、実行した。

情報元では、web.config でのイカの記述が欠けており、
...
  <appSettings>
    <!-- Set the value to "Basic" or "Digest" -->
    <add key="Authentication" value="Basic" />
    ...
  </appSettings>
...
この設定がないと試せない。

HTTP モジュールを内包している Mono.Http アセンブリについては、Mono 2.8.1 では、イカのように GAC に存在しており、

$ gacutil -l | grep Mono.Http
Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
Mono.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756

xsp2(ASP.NET 2.0/3.5 プロファイル)用としては、Version=2.0.0.0 の方を使用すればいいだろう。

Digest 認証

web.config: これ以外は、Basic 認証用設定と同様
<?xml version="1.0"?>
<configuration>
  <system.web>
    ...
    <httpModules>
      <!-- For Digest Authentication -->
      <add name="DigestAuthenticationModule" type="Mono.Http.Modules.DigestAuthenticationModule, Mono.Http, Version=2.0.0.0, PublicKeyToken=0738eb9f132ed756" />
    </httpModules>
    ...
  </system.web>
  <appSettings>
    <!-- Set the value to "Basic" or "Digest" -->
    <add key="Authentication" value="Digest" />
    <!-- For Digest Authentication -->
    <add key="Digest.Users" value="/path/to/users.xml" />
    <add key="Digest.Realm" value="My Realm" />
  </appSettings>
</configuration>

所感

簡易、ユーザー・パスワードはプレーンテキスト、匿名ダメ、以上。

参考

0 件のコメント:

コメントを投稿