FormsAuthentication クラス

Web アプリケーションのフォーム認証サービスを管理します。このクラスは継承できません。

名前空間: System.Web.Security
アセンブリ: System.Web (system.web.dll 内)

構文

'宣言
Public NotInheritable Class FormsAuthentication
'使用
Dim instance As FormsAuthentication
public sealed class FormsAuthentication
public ref class FormsAuthentication sealed
public final class FormsAuthentication
public final class FormsAuthentication
適用できません。

解説

フォーム認証を使用して、Windows 認証を必要としない Web アプリケーションに対してパスワードとユーザーの検証を提供できます。フォーム認証では、ユーザー情報は Membership データベースなどの外部データ ソースやアプリケーションの構成ファイルに格納されます。ユーザーが認証されると、フォーム認証は Cookie または URL に認証チケットを保持し、認証されたユーザーが要求ごとに資格情報を入力しないですむようにします。

フォーム認証は、authentication 構成要素の mode 属性を Forms に設定することにより有効になります。次の例のように、authorization 構成要素を使用して未知のユーザーからの要求をすべて拒否するように設定することによって、アプリケーションに対するすべての要求に、有効なユーザー認証チケットが含まれるように要求できます。

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="login.aspx" />
  </authentication>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>

この例では、アプリケーションに含まれる ASP.NET ページに対するすべての要求に、フォーム認証によって提供される有効なユーザー名が必要になります。ユーザー名が存在しない場合、その要求は構成されている LoginUrl にリダイレクトされます。

FormsAuthentication クラスは、ユーザーを認証するアプリケーション コード内で使用できるメソッドとプロパティを提供します。RedirectToLoginPage メソッドは、アプリケーションにログインするユーザーに対して、構成された LoginUrl にブラウザをリダイレクトします。認証済みユーザーは、RedirectFromLoginPage メソッドによって、初めに要求された、保護されている URL または DefaultUrl にリダイレクトされます。また必要に応じて、フォーム認証チケットを管理できるメソッドもあります。

トピック 場所
チュートリアル : メンバシップとユーザー ログインを使用する Web サイトの作成 (Visual Studio) Visual Studio での ASP .NET Web アプリケーションの作成
チュートリアル : メンバシップとユーザー ログインを使用する Web サイトの作成 Visual Web Developer でのアプリケーションの作成
方法 : 簡単なフォーム認証を実装する Visual Studio ASP .NET での Web アプリケーションの作成
方法 : ASP.NET ログイン コントロールの高度な機能を使用する Visual Studio ASP .NET での Web アプリケーションの作成
方法 : 簡単なフォーム認証を実装する Visual Studio ASP .NET での Web アプリケーションの作成
方法 : ASP.NET ログイン コントロールの高度な機能を使用する Visual Studio ASP .NET での Web アプリケーションの作成
方法 : ASP.NET ログイン ページを作成する Visual Studio ASP .NET での Web アプリケーションの作成
方法 : ASP.NET ログイン ページを作成する Visual Studio ASP .NET での Web アプリケーションの作成
方法 : 簡単なフォーム認証を実装する ASP .NET Web アプリケーションの作成
方法 : ASP.NET ログイン コントロールの高度な機能を使用する ASP .NET Web アプリケーションの作成
方法 : ASP.NET ログイン ページを作成する ASP .NET Web アプリケーションの作成

使用例

次のコード例に、フォーム認証用に ASP.NET メンバシップ プロバイダを使用してすべてのユーザーを認証する ASP.NET アプリケーションの Web.config ファイルを示します。

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=MySqlServer;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />
  </connectionStrings>
  <system.web>
    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
      <providers>
        <add name="SqlProvider"
          type="System.Web.Security.SqlMembershipProvider"
          connectionStringName="SqlServices"
          enablePasswordRetrieval="false"
          enablePasswordReset="true"
          requiresQuestionAndAnswer="true"
          passwordFormat="Hashed"
          applicationName="/" />
      </providers>
    </membership>
  </system.web>
</configuration>

次のコード例では、フォーム認証と ASP.NET メンバシップを使用する ASP.NET アプリケーションのログイン ページを示しています。

セキュリティに関するメモセキュリティに関するメモ :

この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。詳細については、「スクリプトによる攻略の概要」を参照してください。

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

Public Sub Login_OnClick(sender As Object, args As  EventArgs)

   If (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text)) Then
      FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked)
   Else
     Msg.Text = "Login failed. Please check your user name and password and try again."
   End If

End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
  <title>Login</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Login</h3>

  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />

  Username: <asp:Textbox id="UsernameTextbox" runat="server" /><br />
  Password: <asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /><br />
 
  <asp:Button id="LoginButton" Text="Login" OnClick="Login_OnClick" runat="server" />
  <asp:CheckBox id="NotPublicCheckBox" runat="server" /> 
  Check here if this is <span style="text-decoration:underline">not</span> a public computer.

</form>

</body>
</html>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

public void Login_OnClick(object sender, EventArgs args)
{
   if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
      FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
   else
     Msg.Text = "Login failed. Please check your user name and password and try again.";
}


</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
  <title>Login</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Login</h3>

  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />

  Username: <asp:Textbox id="UsernameTextbox" runat="server" /><br />
  Password: <asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /><br />
 
  <asp:Button id="LoginButton" Text="Login" OnClick="Login_OnClick" runat="server" />
  <asp:CheckBox id="NotPublicCheckBox" runat="server" /> 
  Check here if this is <span style="text-decoration:underline">not</span> a public computer.

</form>

</body>
</html>

.NET Framework のセキュリティ

継承階層

System.Object
  System.Web.Security.FormsAuthentication

スレッド セーフ

この型の public static (Visual Basicでは共有) メンバはすべて,スレッド セーフです。インスタンス メンバの場合は,スレッド セーフであるとは限りません。

プラットフォーム

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

バージョン情報

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0

参照

関連項目

FormsAuthentication メンバ
System.Web.Security 名前空間

その他の技術情報

フォーム認証プロバイダ