- PR -

ASP.NET 2.0 ログインコントロールでカスタム認証

1
投稿者投稿内容
貴水
会議室デビュー日: 2008/11/18
投稿数: 8
投稿日時: 2008-12-19 22:39
開発OS:Windows Vista Business
ASP.NET2.0
SQL Server 2008
で開発しております。

Form認証のログインコントロールのAuthenticateイベントで、ユーザ名とパスワード以外にも独自の項目のチェックを行おうとしています。
現在はその独自項目チェックを通過し、Authenticateイベントの引数のAuthenticateEventArgs.Atuhenticatedにtrueを設定すると、認証成功にすることはできています。

しかしこれだと、UserNameに紐付けられているPasswordが間違っていてもAtuhenticatedがtrueになってしまいます。
独自認証した際はUserNameとPasswordチェックもコードで書かないといけないのだと思い、以下のところまでは調べられました。

・aspnetdbのdbo.aspnet_Applicationsテーブルでアプリケーション名からApplicationIdを取得。
・同じくdbo.aspnet_UsersテーブルでApplicationIdとUserNameからUserIdを取得
・dbo.aspnet_MembershipテーブルでUserIdのPasswordを取得

しかしこのDBから取得したPasswordは復号しないと、ログインコントロールのパスワードとは比較できません。
このパスワードを復号する方法をご存じの方、ご教授ください。
もしくは、復号しなくても、○○クラスの□□メソッドで認証ができる、等の情報がありましたらご教授ください。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2008-12-20 01:29
Membership.ValidateUserでできませんか?
貴水
会議室デビュー日: 2008/11/18
投稿数: 8
投稿日時: 2008-12-20 02:01
なちゃさんありがとうございます。

1日中悩んでたのが馬鹿らしくなるくらいあっさりと、Membership.ValidateUserでいけました。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-12-22 10:17
問題自体は解決しているようですね。

> しかしこのDBから取得したPasswordは復号しないと、ログインコントロールのパスワードとは比較できません。

これは、デフォルトでパスワードを暗号化する設定になっているからです。
web.configの設定を変えることで、暗号化せずにDB内にパスワードを保存させることもできます。
ログイン系のコントロールの動作はweb.configの設定でいろいろ変えられるところが大きいので、調べて覚えておくと何かのときに役に立つかもしれません。
1

スキルアップ/キャリアアップ(JOB@IT)