共计 1830 个字符,预计需要花费 5 分钟才能阅读完成。
认证(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 中,认证是辨认用户身份的过程,受权是决定用户是否有权限拜访资源的过程。
参考资料
- ASP.NET Core Authentication and Authorization1
- Microsoft identity platform and OAuth 2.0 authorization code flow2
感谢您的浏览,如果您感觉本文有用,请点赞、关注和转发;更多精彩内容请关注我的博客 https://www.newbe.pro 和 https:…。
- 本文作者:newbe36524
- 本文链接:https://www.newbe.pro/Others/0x018-what-is-authentication-and-authorization-in-aspnetcore/
- 版权申明:本博客所有文章除特地申明外,均采纳 BY-NC-SA 许可协定。转载请注明出处!
- https://learn.microsoft.com/a… ↩
- https://learn.microsoft.com/a… ↩