4、認証の構成


認証の構成
Asp.NetFrameworkは3種類の検証タイプをサポートしています
Windows認証
   .NetPassport認証
Forms認証
特定のプログラムでは、同じ時点で1つの認証方式しか有効にできません.
デフォルトでは、Windows認証が有効になります.認証ユーザ職責がIISに委任された
.Net Passport認証は、MSNやHotmailのようなマイクロソフトのWebサイトで使用される認証タイプです.
Forms認証.Forms認証を有効にすると、通常Cookieを使用してユーザーを検証します.
Web.Config

<configuration>
  <system.web>
    <authentication mode="Forms">
    </authentication>
  </system.web>
</configuration>

1.Forms認証の構成
Forms認証のいくつかの構成オプションは次のとおりです.
CookielessがCookieをサポートしていない場合は、Forms認証UseCookies、UseUri、AutoDetect、UseDeviceProfieのデフォルト値UseDeviceProfieを使用することもできます.
defaultUrlは、ユーザが認証後に移動するページを指定するために使用され、デフォルト値はdefault.aspx
domainは、Cookieの検証に関連するドメインを指定します.デフォルトは空の文字列です.
EnableCrossAppRedirectsは、クエリー文字列内の検証資格証明を渡すことによって、アプリケーション間でユーザーを検証するために使用されます.デフォルト:false
loginUrlは、Loginページのパスを指定します.デフォルト:Login.aspx
nameは、認証クッキーの名前を指定するために使用されます.デフォルト:ASPXAUTH
pathは、クッキーに関連付けられたパスを指定して検証するために使用されます.デフォルト:/
protectionは、検証クッキーを暗号化する方法を指定します.値:All,Encryption,None,Validation.デフォルト:ALL
requiressSSLは、認証クッキーを渡すときにSSL接続を使用する必要があるかどうかを指定するために使用され、デフォルトFalse
slidingExpirationは、検証Cookieが一定期間の再アクセスで期限切れになることを防止するために使用されます.値:true、falseデフォルト:true
timeoutは、Cookieの検証が何分後に期限切れになるかを指定します.デフォルト30


 
   
     
   

 


2、CookieのないForms認証を使用する
Forms認証は、通常、Cookieを使用してユーザーを識別します.Cookieがサポートされていないものがあれば、Cookie認証機能なしで使用できます.
Cookie認証なし機能を有効にすると、ページURLに追加された一意の文字列IDの列でユーザーが識別されます.
ユーザーがアプリケーションの関連ページ間を往復すると、文字列識別も自動的にこれらのページ間で伝達され、アプリケーションはこのようなページ交差要求でユーザーを自動的に識別します.
ASPを望むならNET Frameworkは、ブラウザがCookie機能をサポートしているかどうかを自動的に検出し、CookielessプロパティをAutoDetectに設定する必要があります.

<?xml version="1.0"?>

<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms  cookieless="AutoDetect"/>
    </authentication>
  </system.web>
</configuration>

3.Forms認証で相対タイムアウト制限を使用する
ユーザは、ページが要求されていなくても、30分間隔で認証済みの状態にある.ユーザーが合法的にログインしてから30分以上経ってもページにアクセスしない場合、ユーザーは自動的にアプリケーションからログインします.

<?xml version="1.0"?>

<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms slidingExpiration="false" timeout="1"/>
    </authentication>
  </system.web>
</configuration>

ユーザーに毎分1回のログインを強制します.
4、アプリケーション間でForms認証を使用する
質問:
1.会社の従業員が会社の異なるアプリケーション間で切り替えたときに複数回ログインすることを望まない
2.Webサーバクラスタ(web farm)を実行し、ユーザーが異なるWebサーバにアクセスするときにログインすることを望んでいない.
この暗号鍵と検証コードは、WebプロファイルのmachineKey要素で設定できます.

<?xml version="1.0"?>

<configuration>
  <system.web>
    <machineKey decryption="Auto" validation="SHA1" decryptionKey="AutoGenerate,IsolateApps" validationKey="AutoGenerate,IsolateApps"/>
    <authentication mode="Forms">
      <forms slidingExpiration="false" timeout="1"/>
    </authentication>
  </system.web>
</configuration>

GenerateKeys.aspx

<%@ Page Language="C#" %>

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

    protected void Page_Load(object sender, EventArgs e)
    {
        lblAES.Text = GetSequence(64);
        lblSHA1.Text = GetSequence(128);
    }

    private string GetSequence(int length)
    {
        byte[] buffer = new byte[length / 2];
        RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider();
        provider.GetBytes(buffer);
        StringBuilder builder = new StringBuilder(length);
        for (int i = 0; i < buffer.Length; i++)
            builder.Append(string.Format("{0:X2}", buffer[i]));
        return builder.ToString();
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        AES:
        <asp:Label ID="lblAES" runat="server" />
        <br />
        <br />
        SHA1:
        <asp:Label ID="lblSHA1" runat="server" />
    </div>
    </form>
</body>
</html>

鍵が指定されているMachineKey要素が表示され、サーバールートディレクトリのWebプロファイルに追加できます.
5、ドメイン間でForms認証を使用する
P62
6.FormsAuthenticationクラスの使用
Forms認証を使用する主なAPIは、FormsAuthenticationクラスです.
属性:
CookieDomainは、認証Cookieに関連付けられたドメインを返します.
CookieModeはCookie認証モードを返します.
CookieSupportedはcookieをサポートし、Formsはcookie機能を有効にし、trueを返します.
DefaultUrl検証に成功した後に転向したページURL
EnableCrossAppRedirects認証情報がクエリ文字列から削除されると、この属性はTrueを返します.
FormsCookieName認証Cookieの名前を返します
FormsCookiePathは、認証Cookieに関連付けられたパスを返します.
LoginUrlがユーザ認証時に転向したページURLを返す
  RequiredSSL                    
SlidingExpiration相対タイムアウト制限ポリシー
方法:
Authenticateは、Webプロファイルに格納されているユーザー名とパスワードのリストに基づいて、入力したユーザー名とパスワードを検証します.
Decrypt認証Cookieの復号化
GetAuthCookie認証Cookieの取得
GetRedirectUrlは、Loginページにリダイレクトする前の元のページパスを取得するために使用されます.
HashPasswordForStoringInConfigFile Webプロファイルに格納するパスワードをハッシュする
RedirectFromLoginPageは、Loginページにリダイレクトする前の元のページを使用します.
RedirectToLoginPageユーザー要求をLoginページにリダイレクト
RenewTicketIfOld認証クッキーの有効期限の更新
SetAuthCookie認証Cookieの作成と発行
SignOutは認証Cookieを削除し、同時にユーザーをアプリケーションから登録させる
7、Userクラスの使用
Pageを通ります.UserまたはHttpContext.Userプロパティは、現在のユーザーのユーザー情報を取得します.
2011-5-4  10:07:23 danny