ASP.NET 認証まわりメモ
メンバシップフレームワーク
メンバシップ プロバイダの実装
サンプル メンバシップ プロバイダの実装
方法 : サンプル メンバシップ プロバイダを実装する
方法 : カスタム メンバシップ ユーザーを実装する
DataSourceごとにプロバイダクラスを生成する必要がある。(DBのSQL方言など?)
プロバイダの実装例ではmdb(Access)をデータストアとしたプロバイダの実装例が掲載されている。
メンバシップユーザーの項目を追加する場合は、独自のユーザークラスを作成する必要がある。
また、それに伴いプロバイダクラスも拡張が必要になる。これらクラスのソースコードが一部抜粋して掲載されている。
サンプル メンバシップ プロバイダの実装
方法 : サンプル メンバシップ プロバイダを実装する
方法 : カスタム メンバシップ ユーザーを実装する
DataSourceごとにプロバイダクラスを生成する必要がある。(DBのSQL方言など?)
プロバイダの実装例ではmdb(Access)をデータストアとしたプロバイダの実装例が掲載されている。
メンバシップユーザーの項目を追加する場合は、独自のユーザークラスを作成する必要がある。
また、それに伴いプロバイダクラスも拡張が必要になる。これらクラスのソースコードが一部抜粋して掲載されている。
メンバーシップによるチェックが成功した後の動き
Membership.ValidateUser()でユーザー名とパスワードの確認を行い、
パスするとFormsAuthenticationクラスを使用して認証処理を行う。
(ASP.NET MVCの場合は自動生成されるAccountControllerクラスのソースコードを参照。)
パスするとFormsAuthenticationクラスを使用して認証処理を行う。
(ASP.NET MVCの場合は自動生成されるAccountControllerクラスのソースコードを参照。)
認証チケットとは
より
フォーム認証では、いったん認証されると認証チケットと呼ばれる資格情報がクッキーとしてクライアントへ送信される。 クライアントはこのクッキーを送信することで認証済みであることを示し、アプリケーションへアクセスすることができる。
認証チケット設定
認証チケット保存にCookieを使用するかWeb.configに指定しておく必要がある。
authentication/forms@cookieless 属性値に値をセットする。
ここで指定された値は、FormsAuthentication.CookieModeプロパティへセットされる。
※参照 FormsAuthentication.CookieMode プロパティ (System.Web.Security)
authentication/forms@cookieless 属性値に値をセットする。
ここで指定された値は、FormsAuthentication.CookieModeプロパティへセットされる。
※参照 FormsAuthentication.CookieMode プロパティ (System.Web.Security)
クッキーレスでの動作
Web.configのformsノードのcookieless属性値に"UseUri"を指定する。
ログインするとURLが長くなる。これが認証チケット情報。
トップページではない別のページを表示。
"http://localhost/<認証チケット情報>/<以降のUrl>" となる。
認証チケット情報をUrlからはずすとログアウトしてしまう。
<authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880" cookieless="UseUri" /> </authentication>
ログインするとURLが長くなる。これが認証チケット情報。
トップページではない別のページを表示。
"http://localhost/<認証チケット情報>/<以降のUrl>" となる。
認証チケット情報をUrlからはずすとログアウトしてしまう。
認証クッキー名の変更
Web.configのformsノードのname属性値に"test"を指定する。デフォルト値は".ASPXAUTH"
認証クッキー名称がname属性値になる。
<authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880" name="test" /> </authentication>
認証クッキー名称がname属性値になる。
認証チケットの保存
FormsAuthentication.RedirectFromLoginPage()を呼び出すとチケットが発行され、
Cookieが有効な場合はCookieへ、無効な場合はHttpRequest.QueryStringプロパティへセットされる。
その後ページリダイレクトが発生する。
Cookieが有効な場合はCookieへ、無効な場合はHttpRequest.QueryStringプロパティへセットされる。
その後ページリダイレクトが発生する。
現在のログインユーザー情報をセットする
HttpモジュールのSystem.Web.Security.FormsAuthenticationModuleクラスが行う。
(C:\Windows\Microsoft.NET\ 以下にあるデフォルト設定のWeb.configで設定されている。)
認証チケットを復号してユーザー情報を生成、HttpContext.Userへセットする。
FormsAuthenticationModule クラス (System.Web.Security)
(C:\Windows\Microsoft.NET\ 以下にあるデフォルト設定のWeb.configで設定されている。)
認証チケットを復号してユーザー情報を生成、HttpContext.Userへセットする。
FormsAuthenticationModule クラス (System.Web.Security)
ユーザー情報(Principal)
System.Security.Principal.IPrincipalインターフェイス実装クラス。
Identityプロパティでユーザー情報2を返す。たいていはGenericPrincipalクラスが使用される?
IPrincipal インターフェイス (System.Security.Principal) GenericPrincipal クラス (System.Security.Principal)
Identityプロパティでユーザー情報2を返す。たいていはGenericPrincipalクラスが使用される?
IPrincipal インターフェイス (System.Security.Principal) GenericPrincipal クラス (System.Security.Principal)
ユーザー情報2(Identity)
System.Security.Principal.IIdentityインターフェイス実装クラス。
フォーム認証では、認証チケットからFormsIdentityオブジェクトを生成してユーザー情報にセット。
そしてHttpContext.Userへセットされる。
IIdentity インターフェイス (System.Security.Principal) FormsIdentity クラス (System.Web.Security)
フォーム認証では、認証チケットからFormsIdentityオブジェクトを生成してユーザー情報にセット。
そしてHttpContext.Userへセットされる。
IIdentity インターフェイス (System.Security.Principal) FormsIdentity クラス (System.Web.Security)