.net core 认证和授权区别,.net core写web api时,经常会遇到这2行代码,app.UseAuthorization(); 和 app.UseAuthentication(); 眼神不好就会看成是一个方法,细看是2个方法,那UseAuthorization和UseAuthentication这2个.net core 认证和授权区别你清楚吗?
UseAuthorization和UseAuthentication
下面的这2行代码是不是很熟悉呢?
app.UseAuthorization(); app.UseAuthentication();
这就是用.net core开发web api 或者mvc项目时,经常会遇到的,其实它们2个主要就是完成认证和授权的,它们的英文单词粗看几乎类似,细看还是有区别,当然,功能上也是有区别的,那接下来就来说说。
.net core 认证和授权区别
以前一直分不清 authentication 和 authorization,其实很简单,举个例子来说:
你要登机,你需要出示你的 passport 和 ticket,passport 是为了证明你张三确实是你张三,这就是 authentication;而机票是为了证明你张三确实买了票可以上飞机,这就是 authorization。
在 computer science 领域再举个例子:
你要登陆论坛,输入用户名张三,密码1234,密码正确,证明你张三确实是张三,这就是 authentication;再一check用户张三是个版主,所以有权限加精删别人帖,这就是 authorization。
———————————————————————————————————-
>>分割线
———————————————————————————————————-
Authentication 鑒別
判斷使用者是不是他所宣稱的那個人,
如帳號密碼機制,是基於帳號密碼為只有本人跟系統本身才知道的 shared secret,所以只要可以正確輸入密碼,系統就可判斷使用者為這個帳號所代表的人物。
主要回答這些問題:
- Who is the user?
- Is the user really who he/she represents himself to be?
Authorization 授權
判斷當前使用者所擁有對系統資源存取的權限(等級),例如會員登入後擁有讀寫資源的權力,而訪客只有讀的權力。
主要回答這些問題:
- Is user X authorized to access resource R?
- Is user X authorized to perform operation P?
- Is user X authorized to perform operation P on resource R?
Identification 識別
判斷使用者是誰,Identification必須是獨一無二的,才能正確的分辨出每個人。
主要回答這些問題:
- Who is the user?
上面三者的關係
系統要知道某個使用者對系統資源的存取權力,包含三個部分
- 使用者告訴系統他是誰(Identification 機制)。
- 例:輸入ID
- 系統判斷使用者是否真的是他宣稱的那個人(Authentication 機制)
- 例:輸入Password
- 系統根據該帳號所擁有的權限驗証該使用者(Auorization 機制)
- 例:系統判斷該使用者為會員,給予讀及寫的權利
本文引用了CSDN部分原文,原文链接:https://blog.csdn.net/canlets/article/details/50749652