首页 > 编程语言 >在 Asp.Net Core 中什么是认证和授权

在 Asp.Net Core 中什么是认证和授权

时间:2023-02-08 09:14:31浏览次数:48  
标签:Core Asp 认证 token Cookie Net

认证(Authentication) 和 授权(Authorization)在 Asp.Net core 充当了两个不同的职责。有的老伙计在理解的时候还存在误解。本文我们将会通过一些简单的例子来说明这两个概念。

认证(Authentication)识别你是谁,授权(Authorization)决定你能做什么

加入 A 用户现在通过浏览器想要访问时总的网站,这个时候我们需要知道他是谁,也就是认证。如果他是一个普通用户,那么他只能访问一些公开的页面,如果他是管理员,那么他可以访问一些管理员的页面。这个时候我们需要知道他能做什么,也就是授权。

因此,认证是指识别用户的身份,而授权是指决定用户能做什么。

特别说明,识别你是谁的意思是,你可能被识别为一个普通用户,也可能被识别为一个管理员,也可能被识别为一个游客(匿名用户)。

脱离 Asp.Net Core 认证还有另外一层意思

我们常见的 OAuth2.0 认证、OpenID Connect 认证,账号密码认证,二维码认证等等,这些认证其实是用户与系统交互而产生凭据的过程。这些凭据可以是一个 token,也可以是一个 cookie,也可以是一个 session。这些凭据都是用来识别用户身份的。

为了区别这种情况,我们将前者在本文中称为“登录方式”,后者称为“认证方式”。

而在 Asp.Net Core 中,认证是指请求中的凭据如何被转换为一个 Principal 或者 Identity 对象。所以我们会见到 Claims-based authentication,也就是基于声明的认证。

所以实际上整个过程,可以理解为:用户通过登录方式登录,如果登录成功,那么系统会产生一个凭据,这个凭据拒绝与采用的认证方式有关,而是与 Asp.Net Core 中的认证方式有关。

举一些例子:

  • 用户通过基于账号密码的 OAuth2.0 认证登录,那么系统会产生一个 JWT token, 然后我们使用 JWT bearer 认证方式,将这个 token 作为凭据,然后 Asp.Net Core 会将这个 token 转换为一个 Principal 或者 Identity 对象。
  • 用户通过手机扫码的方式登录,那么系统会产生一个 session,然后我们使用 cookie 认证方式,将这个 session 作为凭据保存在 Cookie中,然后 Asp.Net Core 会将这个 Cookie 转换为一个 Principal 或者 Identity 对象。
  • 但其实我也可以这样:用户通过基于账号密码的 OAuth2.0 认证登录,那么系统会产生一个 JWT token, 然后我们使用 cookie 认证方式,将这个 token 作为凭据保存在 Cookie中,然后 Asp.Net Core 会将这个 token 转换为一个 Principal 或者 Identity 对象。

一些情况

那么结合以上情况,我们来鉴别一些词语的意思:

  • Digest authentication: 一种认证方式,它是基于账号密码的,但是密码不是明文传输的,而是通过哈希算法计算出来的。
  • JWT bearer authentication: 一种认证方式,它是基于 JWT token 的,但是 token 不是保存在 Cookie 中的,而是保存在 Authorization header 中。
  • Asp.net Cookie authentication: 一种认证方式,它是基于 Cookie 的, 通过密钥对 Cookie 进行加密,然后将加密后的 Cookie 保存在浏览器中。

总结

在 Asp.Net Core 中,认证是识别用户身份的过程,授权是决定用户是否有权限访问资源的过程。

参考资料

感谢您的阅读,如果您觉得本文有用,请点赞、关注和转发;更多精彩内容请关注我的博客 https://www.newbe.prohttps://github.com/newbe36524/newbe36524


  1. https://learn.microsoft.com/aspnet/core/security/authentication/?view=aspnetcore-7.0&WT.mc_id=DX-MVP-5003606

  2. https://learn.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow?WT.mc_id=DX-MVP-5003606

标签:Core,Asp,认证,token,Cookie,Net
From: https://www.cnblogs.com/newbe36524/p/0x018-what-is-authentication-and-authorization-in-asp

相关文章

  • 新版Bing 搜索后台的.NET 技术栈
    微软在今天在Redmond线下举办媒体一场活动,发布了新版的微软必应,在桌面上推出了测试版,移动版也即将推出。微软首席执行官纳德拉称Al-powered搜索为公司自云15年以来最大的......
  • Kubernetes(k8s)控制器(一):deployment
    目录一.系统环境二.前言三.Kubernetes控制器四.Deployment概览五.创建deployment六.修改deploy副本数6.1kubectleditdeploy修改副本数6.2修改yaml文件更改副本数6.3......
  • netcore日志
    1.日志信息源ILoggingILogging//nuget包Microsoft.Extensions.LoggingMicrosoft.Extensions.Logging.Console//控制器publicclassWeatherForecastController:C......
  • CSharp: donet 7 create database view mapping with EF core 7.02
     sql: createviewViewEmployeeMastersasselecta.*,b.Nameas'DepartmentName',b.Codeas'DepartmentCode'fromEmployeeMastersasa,DepartmentMasterasb......
  • ASP.NET Core+Element+SQL Server开发校园图书管理系统(四)
    随着技术的进步,跨平台开发已经成为了标配,在此大背景下,ASP.NETCore也应运而生。本文主要基于ASP.NETCore+Element+SqlServer开发一个校园图书管理系统为例,简述基于MVC三......
  • Log4net
    环境:.net6开发工具:VS2022SQL2014  日志组件Log4net   上线的项目是必须要有监控日志,便于发现以及处理各种异常信息  1添加Nuget程序包     1添加......
  • Spring AOP与AspectJ的对比及应用
    1简介AOP,即面向切面编程是很常用的技术,特别是在JavaWeb开发中。而最流行的AOP框架分别是SpringAOP和AspectJ。2SpringAOPvsAspectJSpringAOP是基于SpringIoC实......
  • Kubernetes(K8S)概述
    一、K8S概述1、K8S的作用(1)K8S的全称为Kubernetes。(2)用于自动部署、不熟和管理“容器化(containerized)应用程序”的开源系统,可以理解成K8S是负责自动化运维管理多个容器化......
  • CSharp: donet view mapping with EF 6
    /*functionmappinghttps://learn.microsoft.com/en-us/ef/core/querying/user-defined-function-mappingviewmappingpublicDbQuery<View_BookDetails>View_BookDe......
  • .NET Cas 认证(基于Cookie)
    项目需求:开发系统A对接客户公司的cas认证系统B,实现单点登录业务场景描述:打开A系统地址,判断Cookie是否登录状态,如果未登录,跳转B登录界面;如果已登录,直接获取到cookie......