ASP.NETのフォーム認証でログイン機能を実装する方法

Webアプリケーションでは、しばしば限られたユーザーにのみ利用できるページを作りたい場合があります。ASP.NETを使えばユーザー登録したデータと照合して、ログインできるようにするフォーム認証機能を簡単に実装可能です。
- システム
エンジニア - ASP.NETでログイン機能を実装したいんですけど、どうしたら良いですか?
- プロジェクト
リーダー - フォーム認証を使うと、比較的簡単に実装することができますよ。順を追って説明していきましょう。
認証ページ作成の準備
ログインフォームを作成するにあたって、前準備として用意しなければならないことがあります。
- web.configファイルの準備
- サブフォルダ配下の設定
このファイルはユーザー認証情報であるIDとパスワードを記録したもので、この情報をもとにしてログイン認証が行われます。また、このファイルを配置する場所としては、アプリケーション・ルート配下に置かなければなりません。
認証を設定する上では、どのファイルに対してどのユーザーからのアクセスを許可するかを定義しなければなりません。これにより、ユーザーごとに決められたページへのアクセス権限を設定することが可能です。
ログインページとロジックの作成
ログインページの作成には、テキストボックスなどでユーザーIDとパスワードを入力できるようにするほか、ユーザーのアクセス可否の判定と、認証された証明として用いるクッキーを発行することが最低限必要です。クッキーを利用することで、画面遷移ごとに必要なユーザー情報を認証確認するロジックを組む手間を、大きく削減することができます。
ログイン認証のコード
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <system.web> <authentication mode="Forms"> <forms name="test.NET" loginUrl="login_test.aspx" protection="All" timeout="30"> <credentials passwordFormat="Clear"> <user name="testuser" password="pass" /> </credentials> </forms> </authentication> </system.web> </configuration> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<%@ Page ContentType="text/html" Language="C#" %> <script runat="Server"> void objBtn_Click(Object sender, EventArgs e) { if(FormsAuthentication.Authenticate(usr_id.Text, usr_pass.Text)){ FormsAuthentication.RedirectFromLoginPage(usr_id.Text,false); }else{ objLbl.Text="正しいユーザーID、パスワードを入力してください"; } } </script> <html> <body> <form runat="Server"> <center> <b>ID:</b> <asp:TextBox id="usr_id" runat="Server" Columns="10" /><br /> <b>PASS:</b> <asp:TextBox id="usr_pass" runat="Server" Columns="10" TextMode="Password" /> <br/> <asp:Button id="objBtn" runat="Server" Text="ログイン" OnClick="objBtn_Click" /><br /> <asp:Label id="objLbl" runat="Server"/> </center> </form> </body> </html> |
パスワードはSHAで暗号化する
web.configにパスワードを直に書いてしまうと、不正アクセスされた場合にIDとパスワードが漏洩してしまう危険性があります。そのため、不可逆な暗号化形式であるSHAを用いて、暗号化する必要があるでしょう。暗号化された文字列が漏洩したとしても元のパスワードを復元することができないので、高い安全性を担保することが可能になります。
- システム
エンジニア - 思ったより簡単に実装できてしまうんですね。
- プロジェクト
リーダー - そうですね。最低限必要な要素さえ押さえておけば問題ないでしょう。
セキュリティ面に気を付ければ難しいことはない
ASP.NETでフォーム認証機能を実装する方法では、特にパスワードの暗号化に配慮する必要があります。ユーザー情報をSHAで暗号化することにより、高いセキュリティを維持することが可能です。あとは入力フォームとユーザー情報ファイルを用意するだけでフォーム認証機能を実装することができます。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


新着案件New Job
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅)遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅)病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅)開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅)債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅)PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)