2011年5月31日火曜日

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

Mono で提供されている ASP.NET HTTP モジュールについてメモ。


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

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

Basic 認証

web.config: 必要な部分を抜粋
  1. <?xml version="1.0"?>  
  2. <configuration>  
  3.   <system.web>  
  4.     ...  
  5.     <authentication mode="None">  
  6.     </authentication>  
  7.     <authorization>  
  8.       <allow roles="testers"/>  
  9.       <deny users="*" />  
  10.     </authorization>  
  11.     ...  
  12.     <httpModules>  
  13.       <!-- For Basic Authentication -->  
  14.       <add name="BasicAuthenticationModule" type="Mono.Http.Modules.BasicAuthenticationModule, Mono.Http, Version=2.0.0.0, PublicKeyToken=0738eb9f132ed756" />  
  15.     </httpModules>  
  16.     ...  
  17.   </system.web>  
  18.   <appSettings>  
  19.     <!-- Set the value to "Basic" or "Digest" -->  
  20.     <add key="Authentication" value="Basic" />  
  21.     <!-- For Basic Authentication -->  
  22.     <add key="Basic.Users" value="/path/to/users.xml" />  
  23.     <add key="Basic.Realm" value="My Realm" />  
  24.   </appSettings>  
  25. </configuration>  

users.xml: こんな感じ
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <users>  
  3.   <user name="nobita" password="password">  
  4.     <role name="users" />  
  5.   </user>  
  6.   <user name="sta" password="password">  
  7.     <role name="admins" />  
  8.     <role name="testers" />  
  9.     <role name="users" />  
  10.   </user>  
  11.   <user name="tiger" password="password">  
  12.     <role name="testers" />  
  13.     <role name="users" />  
  14.   </user>  
  15. </users>  


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

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

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 認証用設定と同様
  1. <?xml version="1.0"?>  
  2. <configuration>  
  3.   <system.web>  
  4.     ...  
  5.     <httpModules>  
  6.       <!-- For Digest Authentication -->  
  7.       <add name="DigestAuthenticationModule" type="Mono.Http.Modules.DigestAuthenticationModule, Mono.Http, Version=2.0.0.0, PublicKeyToken=0738eb9f132ed756" />  
  8.     </httpModules>  
  9.     ...  
  10.   </system.web>  
  11.   <appSettings>  
  12.     <!-- Set the value to "Basic" or "Digest" -->  
  13.     <add key="Authentication" value="Digest" />  
  14.     <!-- For Digest Authentication -->  
  15.     <add key="Digest.Users" value="/path/to/users.xml" />  
  16.     <add key="Digest.Realm" value="My Realm" />  
  17.   </appSettings>  
  18. </configuration>  

所感

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

参考

0 件のコメント:

コメントを投稿