IIS7 ".NETユーザー"にパスワード変更の自由を。
以前、ブログに書いた通り IIS7 では、Web サイトや仮想ディレクトリの認証に ASP.NET Web フォーム認証を使用することができます。
その際、IIS7 の管理ツールを使用して、".NET ユーザー" アカウントを作成するのですが、用意されている UI では、アカウントの作成と削除/メールアドレスの変更しかできません。
[操作] パネルには、そのほかに [パスワードのリセット] というリンクが用意されておりますが、これをクリックすると既定では以下のような、メッセージボックスが表示され、実質アカウントのパスワードのリセット作業を行うことはできません。
これでは アカウントを使用しているユーザーが、パスワードを変更したくなった場合や、失念してしまった場合は、管理者いちいちアカウントを削除して作り直す必要があり面倒ですし、そもそもユーザーが自分で使用するアカウントを管理者が知っているというのはセキュリティ面からも健全ではありませんし、なにしろ気持ちの良いものではありません。
今回は IIS7 の機能としてはあまり紹介されていない、というか、そんなネタはどこにも載っていない、ある意味 "幻の" と冠をつけてもいいような .NET ユーザーが、自らのパスワードを、自らのために、自らの手によって変更することが可能になる方法をご紹介しましょう。
そして、この方法を実行することで、前出のメッセージボックスに表示されているメッセージの内容に対する以下の "謎" が、たちどころに氷解することでしょう。(勿体ぶっててサーセンw)
- ユーザーの"質問" と "回答" ってなに?
- "ユーザーが自身がパスワードをリセットするようにしてください"って、具体的にどーすんの?
.NET ユーザーが、自らのパスワードを変更可能とするためにはパスワード変更用のページを作成する必要があります。しかし、プログラムのコーディングを行う必要はありません。
具体的な手順は、以下の通りです。
.NET ユーザーのパスワード変更ページの作成
================================
テキストエディタに以下のタグを貼り付け、changePassword.aspx と名前を付けて保存します。
<html> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:ChangePassword ID="ChangePassword1" runat="server" ContinueDestinationPageUrl="~/default.htm"> </asp:ChangePassword> </div> </form> </body> </html> |
Web フォーム認証が正常に動作している IIS7 の Web サイトに配置し、ブラウザからアクセスします。
認証画面を経て、パスワードの変更画面が表示されるので必要な項目を入力し、 [パスワードの変更] ボタンをクリックすると現在使用している .NET ユーザー アカウントのパスワードが変更されます。
ASP.NET のメンバシップ機能を使用したことがある方であれば、ピンときたと思うのですが、パスワード変更に表示される UI は ASP.NET Web フォームコントロールの ChangePassword コントロールです。
これは Web フォーム認証に Login コントロールが使用できる理由と同じく、 IIS7 と ASP.NET のパイプラインが統合されているためにこういったことが可能になるのです。
よって、パスワード変更画面の詳細な設定については、以下のドキュメントに紹介されているプロパティを <asp:ChangePassword> タグの属性として追加することで可能になります。
『ChangePassword プロパティ』
https://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.changepassword_properties(VS.80).aspx
あとのデザインについては、自らの感性に任せてタグなり CSS なりを追加しまくっちゃってください。:-P