日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.net中的认证和授权(学习笔记)

發(fā)布時間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net中的认证和授权(学习笔记) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

以前對這部分一直糊涂著,總算理理清楚了

包名:System.Security.Principal:
Identity:(識別)包裝了已經(jīng)驗證過的用戶名和認(rèn)證的方式
?主要成員:Name, IsAuthenticated, AuthenticationType
Principal: 當(dāng)前代碼的security上下文。包含Identity和Roles. 用于授權(quán)
?主要成員:IsInRole, Identity

* // 一般用戶可以有多個Indentity, 即多種身份來訪問不同資源 --pending
* 每個AppDomain里面都有CallContext,CallContext里面包含Principal。線程在啟動的時候也會帶上Pricncipal的ref。靜態(tài)方法,僅對當(dāng)前線程
* Thread.CurrentPrincipal / WindowsIdentity.GetCurrent()靜態(tài)方法返回當(dāng)前用戶。

Permission: 權(quán)限。不是用戶需要權(quán)限,是執(zhí)行它的代碼需要權(quán)限。
???? Demand()要求調(diào)用此代碼的代碼有什么權(quán)限。Assert()斷言
三種權(quán)限:
??1 代碼權(quán)限: 基類為CodeAccessPermission .用來保護環(huán)境變量、文件、訪問非托管代碼。總表參見:
?????? ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpguide/html/cpconcodeaccesspermissions.htm
??2 Identity權(quán)限:基類為CodeAccessPermission。對應(yīng)于控制臺中的信任集設(shè)定?;诎l(fā)行者、強類型、域、URL。總表:
???ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpguide/html/cpconidentitypermissions.htm
??3. PrincipalPermission(Role Based Permission)

Authorization?授權(quán) 判斷用戶是否有權(quán)操作,比如登錄的用戶有沒有權(quán)限訪問資源或者數(shù)據(jù)庫
Authentication?認(rèn)證 用戶的Identity. 主要有:HTTP基礎(chǔ)認(rèn)證、證書、Kerberos、Passport、NTLM、Forms-based、Digest

這兩個東西最好從讀音上區(qū)別,以前一直糊涂。一般應(yīng)用先authenticate用戶, 判斷用戶是否能鏈接到系統(tǒng)。然后authorization, 判斷對某個功能是否有權(quán)限。

authorization一般有兩種:ACL/ROLES
ACL:Acess Control Lists. 判斷用戶是否在有權(quán)限的用戶組內(nèi)。缺點:不能定義動態(tài)條件。
Role based: 用戶加入到某個role以后,自動獲得了很多特定的權(quán)限。先判斷請求者的Identity, 然后看它是否在Role里面。類似windows用戶和組的關(guān)系

1. 代碼中的檢查方式:new PrincipalPermission(name,role).Demand();
2. 利用Attribute的方式:[PrincipalPermissionAttribute(SecurityAction.Demand,Name="MyUser", Role="Administrator")]
3. 使用 Principal 對象中的屬性和 IsInRole 方法執(zhí)行顯式安全性檢查。
4. web.config里面authorization節(jié)中的users/roles(這個一般資料都沒提到)


參考:
臺灣MSDN Library 中文技術(shù)文件:PPT, 文章
臺灣msdn里面有不少好東西,比china的強多了!

補充:
1. ASP.net中線程的Principal是根據(jù)HttpComtext.Current.User來的,但是從線程取更值得推薦(與asp.net無關(guān))
2. AppDomain.CurrentDomain.SetPrincipalPolicy設(shè)定Thread.CurrentPrincipal的預(yù)設(shè)值
3. AppDomain.CurrentDomain.SetThreadPrincipal(Thread.CurrentPrincipal) 設(shè)定新線程的預(yù)設(shè)Principal, 只能調(diào)用一次


總結(jié)

以上是生活随笔為你收集整理的.net中的认证和授权(学习笔记)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。