Asp.Net 認証
やっと認証がまとまった。
正直よくわかってなかったので、すっきりできてよかった。
いい機会だったんだな。
windows認証
フォーム認証
パスポート認証
がある。
パスポート認証は調べなくていいや
http://www.atmarkit.co.jp/fdotnet/aspnet/aspnet17/aspnet17_01.html
●認証 Authentication
ユーザがアクセス権を持つユーザ本人であるか確認する。プロセス。
windows認証
windowsのアカウントで認証する。独自にユーザ管理の仕組みをつくらなくていい。
IISで認証をかけてしまうから、ASP.NETページにアクセスがあったときにはすでに認証済み。
認証プロトコルには
・基本認証
・ダイジェスト認証
・windows統合認証
がある。
ファイルなどのリソースへのアクセスする時に認証したWindowsアカウントのACLがチェックされる。
ASP.NETアプリのためにWindowsアカウントを作るのはよくない
イントラネット向け
フォーム認証
自分で認証を作るのだけど、ASP.NETのサポートが充実している。
IIS認証は匿名アクセスにする。
*偽装
web.configの
configuration/system.web/identity/@impersonate
をtrueにすると、ユーザが偽装され、IISによって認証されたユーザとしてコードが実行される。
フォーム認証では通常匿名アクセスなのでIUSER_XXX(インターネットゲストアカウント)としてコードが実行されるようになる。(これは意味がない)
windows認証だと、WindowsのユーザとしてIISに認証され、コードもWindowsのユーザとして実行されるため便利。
*ただし、偽装を有効にした場合には偽装するユーザがASP.NETのテンポラリディレクトリを読み書きできるようにACLの設定を行う必要がある。
●認定 Authorization
ファイルなどのリソースへのアクセスの可否の確認。
ファイル認定
Windows認証を使っているときだけ使える。
Windows認証にすれば自動的に有効化される。
ファイルなどのリソースへのアクセスする時に認証したWindowsアカウントのACLがチェックされる。
ファイルへのアクセス時に認証したWindowsアカウントでアクセスするわけではない。
アクセスするのはあくまでASPNETアカウント(XPなら、2003はNetwork Service)。
単に認証したWindowsアカウントのACLでチェックをかけるだけ。
URL認定
URLでのアクセス制御
web.configの
configuration/system.web/authorization
で指定。
authorizationで指定すると、web.configのあるディレクトリとそのサブディレクトリに適用される。
サブディレクトリのweb.configで違う設定があればそちらが優先。
?は非認証ユーザを表す。
rolesでロールでの指定もできる。
roleはWindows認証であればWindowsアカウントのグループになる。
フォーム認証でもroleの指定ができるがこちらは自分で管理。
例.
<authorization> <allow users="user1" /> <deny users="*" /> </authorization> <authorization> <deny users="?" /> </authorization> <authorization> <allow roles="DomainName\SampleGroup" /> <deny users="*" /> </authorization> <authorization> <allow roles="admin" /> <deny users="*" /> </authorization>