ASP.Net 的身分驗證
以組態設定(web.config)即可,不必再使用以前的 cookie.
大致的 web.config 如下
<system.web>
…..
<authentication mode=”Forms|Windows|Passport|None”>
<form name=”your_form” loginUrl=”secure/login.aspx”/>
</authentication>
<authorization>
<allow users=”*”/>
</authorization>
<globalization requestEncoding=”utf-8″ responseEncoding=”utf-8″/>
…..
</system.web>
子目錄會自動繼承父目錄的 web.config.
一般子目錄裡的 web.config 只有設定
…..
<deny user=”?”/>
…..
程式裡面則是使用 System.Web.Security.FormsAuthentication 類別以及 Redirect 方法作轉向以及驗證工作.
類別的安全
某些類別有受到系統保護,當無法存取時,會丟出 SecurityException.
有兩種方法可以實現:
1.命令式,為權限建立 instance.
new FileIOPermission( FileIOPermissionAccess.Read, Path).Demand()
2.宣告式,以屬性的方式來宣告,比較固定
<FileIOPermission( SecurityAction.Demand, write=”/tmp”>
void foo()
{
}
簡單說,類別若有”類別Permission”的類別,就可以用”類別Permission”去控制類別是否可以被存取.
AssemblyInfo.cs evidence, 此部分與 gac_util 有關係
Permission Set, Security Policy
安全性原則,用 .Net 工具就可以管理其組態.
Role -> 類似群組
Identity -> 類似 user 帳號
Principal -> Role
PrincipalPermission
非結合 Windows 的方法
GenericIdentity MyIdentity=new GenericIdentity(“myuser”);
string[] MyStringArray={“Mgr”,”Developer”};
GenericPrinpal MyPrincipal=new(….);
結合 Windows 方法
AppDomain.CurrentDomain.SetPrincipalPolicy()
Thread.CurrentPrincipal 取得或給定
或先取 Identity, 再由 Identity取得 Principal
WindowsIdentity.GetCurrent(); 取得目前的 identity
=====
ASP.Net 的認證與控制
基本上都是在 web.config 中指定
<authentication mode=”Forms”>
<form name=”” loginUrl=””/>
</authentication>
mode 可以填 passport, none, windows
<authentication>
<allow users=”*”/>
<deny users=”aaa”/>
</authentication>