マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

web.config上の設定

図 web.configの設定

<authentication mode="Forms">
  <forms name="formauth" 
    loginUrl="(ログイン画面のURL)"
    defaultUrl="(メニュー画面のURL)"
    protection="All"
    timeout="60"
    path="/"
    requireSSL="false"
    slidingExpiration="true"
    enableCrossAppRedirects="false"
    cookieless="UseDeviceProfile" domain="">
  </forms>
</authentication>
<authorization>
  <deny users="?"/>
</authorization>

web.config(authenticationタグのtimeout属性)に記述する。

ログイン画面と認証ロジック

ログイン画面

ログイン画面(*.aspx)

認証ロジック(C#の場合)

認証ロジック(コードビハインド)

protected void Button1_Click(object sender, EventArgs e)
{
    // ユーザ名、パスワードを取得。
    string userName = this.TextBox1.Text
    string passWord = this.TextBox2.Text
    
    // 任意の認証ロジック(userName、passWordからユーザを認証する)。
    
    // 認証か完了した場合、認証チケットを生成し、元のページにRedirectする。
    // 第2引数は、クライアントがCookieを永続化(ファイルとして保存)するかどうか。
    // を設定する引数であるが、セキュリティを考慮して、falseの設定を勧める。
    FormsAuthentication.RedirectFromLoginPage(userName, false);
}

詳細

クロスサイト設定

1 つのサーバ上 or Web ファーム内のアプリケーション間

machine keyと認証チケットのcookie名を同じにする。

同一ドメインのサイト間での利用

上記に加え、enableCrossAppRedirects?要素をtrueに設定することで、
ASP.NET2.0からWebサイト間のシングル サイン オンも可能になった。

コンテンツごとの制御

静的コンテンツへの適用

また、Forms認証はASP.NETの認証基盤機能であるため、
動的コンテンツ(aspx)以外に利用できないと思われがちだが、
下記のような設定によって静的コンテンツにも適用できるようになる 。

ただし、IIS6.0では、web.configファイルに以下の例に従った記述が必要になる。

<httpHandlers>
  <add verb="*" path="*.pdf" type="System.Web.StaticFileHandler" />
  <add verb="*" path="*.html" type="System.Web.StaticFileHandler" />
</httpHandlers>

※ 拡張子ごとに、addタグを追加する。

一部コンテンツを認証対象外に設定する。

以下の設定で認証対象外に設定できる(フォルダやファイル単位で指定できる)。

<!-- Framework ファイルを認証対象外にする -->
<location path="Framework/Img">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>
<location path="Framework/Js">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>
<location path="common">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>

クロスサイト、クロスドメイン

クロスサイト

ASP.NETのForms認証では、クッキー認証チケットをクロスサイトで使用できる。

クロスドメイン

等を検討した方が良さそう。

ASP.NET Web Forms以外での利用

ASP.NET Mobile Web

なお、携帯端末用のASP.NET Mobile Web(既にdiscon)の場合、端末によっては、
Cookieをサポートしていないケースがあるため、Forms認証の認証チケット(Cookie)の持ち回り方法が異なる。

web.configのformsタグの定義を次のように、cookieless="UseUri?"と記述する。

<forms name="formauth" ~ cookieless="UseUri"/>

この場合、下記に示す様に、ASP.NET Mobile Webにより、URLにForms認証の認証チケット(Cookie)が埋め込まれる。

http://[FQDN名]/[アプリケーション名]/S(SessionID)F(Forms認証の暗号化された認証チケット)/xxx.aspx

ASP.NET Mobile Web では、URLに埋め込まれたForms認証の認証チケット(Cookie)などの情報を上手く引き継ぐために、
画面遷移の際は、MobilePage?.RedirectToMobilePage? メソッドを使用する必要がある。

ASP.NET MVC における 認証

ASP.NET Core における 認証

参考

ASP.NET でSessionCookie、Cookie認証Ticketを共有する方法


Tags: :.NET開発, :ASP.NET, :ASP.NET Web Forms, :ASP.NET MVC, :認証基盤, :セキュリティ


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS