站点图标 江湖人士

UseAuthorization和UseAuthentication,2个例子明白.net core 认证和授权区别

.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,所以只要可以正確輸入密碼,系統就可判斷使用者為這個帳號所代表的人物。

主要回答這些問題:

Authorization 授權

判斷當前使用者所擁有對系統資源存取的權限(等級),例如會員登入後擁有讀寫資源的權力,而訪客只有讀的權力。

主要回答這些問題:

Identification 識別

判斷使用者是誰,Identification必須是獨一無二的,才能正確的分辨出每個人。

主要回答這些問題:

上面三者的關係

系統要知道某個使用者對系統資源的存取權力,包含三個部分

  1. 使用者告訴系統他是誰(Identification 機制)。
    • 例:輸入ID
  2. 系統判斷使用者是否真的是他宣稱的那個人(Authentication 機制)
    • 例:輸入Password
  3. 系統根據該帳號所擁有的權限驗証該使用者(Auorization 機制)
    • 例:系統判斷該使用者為會員,給予讀及寫的權利

本文引用了CSDN部分原文,原文链接:https://blog.csdn.net/canlets/article/details/50749652

退出移动版