|
.NET TIPS [ASP.NET]フォーム認証のユーザー管理をXMLファイルで行うには?山田 祥寛2004/04/09 |
![]() |
|
|
|
別稿「TIPS:[ASP.NET]構成ファイルのみでフォーム認証を実現するには?」では、web.configのみを利用したフォーム認証の実現方法について紹介した。ログイン・ページの作成において、ごくごく定型的なコーディングが必要であるほかは、ほとんどプログラムレスで認証の仕組みを構築できることがお分かりいただけたことと思う。
しかし、実際のアプリケーションを構築するに際しては、不満に思われる方も少なくないはずだ。というのも、web.configにおいてはユーザー名とパスワードしか管理することができないが、多くのアプリケーションにおいては認証ユーザーに関するさまざまな情報をともに管理したいというケースが少なくないからだ。ユーザー名、ユーザーの所属部門、E-Mailアドレス……、あるいはパーソナライゼ―ション機能を持つアプリケーションならば、画面の初期設定に関するさまざまな情報を保持したいということもあるだろう。純粋に、リソースへのアクセス制限を目的とした認証でない限り、ユーザー情報と称するものの中には多くの付随情報を含むのが通常である。
そこで本稿では、認証ユーザーの管理をweb.configではなく、独自に定義したXML文書で行う方法について紹介する。独自のXML文書を用いることで、ユーザーIDとパスワードだけではなく、より多様なユーザー属性を管理、アプリケーション内で利用することができるようになる。
1. ユーザー管理用のXML文書を用意する
XML文書は2次元表に変換可能なフォーマットで、かつ、ユーザーIDとパスワードさえ含んでいれば、要素名・構造も含めて特別な制約はない。例えば、本稿では以下のようなXML文書(usr.config)を用意してみた。
|
|
| 独自に定義したユーザー管理用のXML文書(usr.config) |
usr.configでは、仮にユーザーID(uid)、パスワード(passwd)、ユーザー名(unam)、所属部門(depart)、カンマ区切りの権限(role)などの情報を定義している。パスワードはあらかじめSHA1方式で暗号化したものを記述している。暗号化の方法については、別稿「TIPS:[ASP.NET]フォーム認証用のパスワードを暗号化するには?」を参照いただきたい。
あえて拡張子を「.config」としているのは、HTTP経由でユーザー情報にアクセスできてしまうのを防ぐためだ。ユーザー情報が不特定多数のユーザーから参照できる状態にしておくのは、セキュリティの観点からも当然好ましくない。
2. web.configの設定を行う
ユーザー情報を外部ファイル化してしまったので、web.configにはもはや<credentials>要素配下の情報は必要ない。別稿「TIPS:[ASP.NET]構成ファイルのみでフォーム認証を実現するには?」のweb.configから<credentials>要素を取り除いておこう。また、<forms>要素のloginUrl属性(ログイン・ページの指定)を「xml_login_cs.aspx」に変更する。
|
|
| <credentials>要素を取り除いた構成ファイル(web.config) |
なお、認証対象のフォルダ(例えば、「/auth」フォルダ)におけるweb.configについては、別稿「TIPS:[ASP.NET]構成ファイルのみでフォーム認証を実現するには?」のものをそのまま転用することができる。
3. ログイン・ページを設計する
ユーザー管理にカスタムのXML文書を利用する場合には、ログイン・ページに若干のコードの追加が必要になる。というのも、認証の可否を判定するためのFormsAuthenticationクラス(System.Web.Security名前空間)のAuthenticateメソッドがカスタムのXML文書に対しては利用できないためだ。認証を判定する部分のロジックについては、自ら構築する必要がある。次のサンプル・プログラムは、この処理を行っているログイン・ページの実装例である。XML文書の読み込みにはデータセットを用いている。
|
|
| 認証ロジックを組み込んだログイン・ページ(C#:xml_login_cs.aspx) |
|
|
| 認証ロジックを組み込んだログイン・ページ(VB.NETxml_login_vb.aspx) |
FormsAuthenticationクラスのAuthenticateメソッドを使用する限りにおいてパスワードが暗号化されているかどうかを気にする必要がない。しかし、ここで1つだけ注意すべき点は、本稿のようにカスタムの認証ロジックを自ら組み込んだ場合には、暗号化の処理も自ら組み込まなければならないという点である。カスタムのXMLファイルとパスワードを比較する場合、(当然)自動的にパスワードの暗号化は行われない。
以上で一連の準備は完成だ。「/auth」フォルダ配下の任意のファイルにアクセスし、別稿「TIPS:[ASP.NET]構成ファイルのみでフォーム認証を実現するには?」同様、フォーム認証が正常に動作することを確認してみてほしい。
なお、認証後のページにおいては、任意のユーザーの属性情報を引用することが可能である。詳細については、別稿「TIPS:[ASP.NET]認証後のページでカスタムのユーザー情報を引用するには?」を参照いただきたい。![]()
| カテゴリ:Webフォーム 処理対象:構成ファイル カテゴリ:Webフォーム 処理対象:認証 使用ライブラリ:FormsAuthenticationクラス(System.Web.Security名前空間) 関連TIPS:[ASP.NET]構成ファイルのみでフォーム認証を実現するには? 関連TIPS:[ASP.NET]フォーム認証用のパスワードを暗号化するには? 関連TIPS:[ASP.NET]認証後のページでカスタムのユーザー情報を引用するには? |
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


