文章目录

  • AspNetCore3.1_Secutiry源码解析_1_目录
  • AspNetCore3.1_Secutiry源码解析_2_Authentication_核心项目
  • AspNetCore3.1_Secutiry源码解析_3_Authentication_Cookies
  • AspNetCore3.1_Secutiry源码解析_4_Authentication_JwtBear
  • AspNetCore3.1_Secutiry源码解析_5_Authentication_OAuth
  • AspNetCore3.1_Secutiry源码解析_6_Authentication_OpenIdConnect
  • AspNetCore3.1_Secutiry源码解析_7_Authentication_其他
  • AspNetCore3.1_Secutiry源码解析_8_Authorization_核心项目
  • AspNetCore3.1_Secutiry源码解析_9_Authorization_Policy

概述

最近一直在学习研究认证授权这一块,从AspNetCore的Security解决方案,到Identity,再到OAuth2.0、OpenIdConnect协议,然后IdentityServer4,这一块的东西十分多而且复杂,可以算是DotNet里最难啃的骨头之一了。计划做个认证授权的系列,藉由分析源码来学习、记录和加深对这一块的理解。

如图是AspNetCore.Security解决方案的项目结构。

可以看到主要有5个解决方案文件夹

  • Authentication:认证
  • Authorization:授权
  • CookiePolicy:Cookie策略中间件
  • _dependencies:依赖项目
  • benchmarks:测试项目

最主要的是Authentication和Authorization这两个里面的内容。

什么是Authentication, 什么是Authorization

初次接触这一块,可能会比较懵,啥玩意儿啊,俩单词长得差不多像念绕口令的。

我尝试大白话解释下。

Authentication(认证):who are you。系统获知当前用户身份的过程就叫认证。可以类比成身份证。通常来说,在你登录的时候,系统就知道了你的身份,然后将当前用户信息加密后存储在Cookie中来维持登录态。

Authorization(授权):are you allowed。授权就是判断你有没有权限,比如网管拿着你身份证一看,你这不行,未满十八岁,不能在我这上网。而有的黑网吧是没有这个要求的,给钱就能玩。正经网吧和黑网吧,这就是需要授权资源和匿名资源的区别。

Authentication项目简介

我们可以看到第三个文件夹叫Core,里面只有一个项目叫Microsoft.AspNetCore.Authentication,是我们使用DotNet授权框架必须引用的一个核心类库。

然后其他的Certificate、Cookies、OAuth、OpenIdConnect等这些,在DotNet里叫做Schema,可以翻译为架构。这就好比,证明身份的方式有很多种,身份证、护照、户口本都可以,同理网络世界也有各种各样的协议。最常见传统的是方式是使用Cookie,也可以使用无状态的JwtBear,现在常见的微信、QQ等扫码登录是使用的OAuth协议。

Authorization项目简介

授权就两个项目,[Microsoft.AspNetCore.Authorization.Policy],[Microsoft.AspNetCore.Authorization]。多看看源码的话,应该对Policy这个词很熟悉了,在DotNet里面属于高频词汇,意思是策略。这两个项目允许设置不同的授权策略/规则,来实现高度灵活的授权方案。

AspNetCore3.1_Secutiry源码解析_1_目录的更多相关文章

  1. AspNetCore3.1_Secutiry源码解析_2_Authentication_核心对象

    系列文章目录 AspNetCore3.1_Secutiry源码解析_1_目录 AspNetCore3.1_Secutiry源码解析_2_Authentication_核心项目 AspNetCore3. ...

  2. AspNetCore3.1_Secutiry源码解析_3_Authentication_Cookies

    系列文章目录 AspNetCore3.1_Secutiry源码解析_1_目录 AspNetCore3.1_Secutiry源码解析_2_Authentication_核心流程 AspNetCore3. ...

  3. AspNetCore3.1_Secutiry源码解析_4_Authentication_JwtBear

    title: "AspNetCore3.1_Secutiry源码解析_4_Authentication_JwtBear" date: 2020-03-22T16:29:29+08: ...

  4. AspNetCore3.1_Secutiry源码解析_5_Authentication_OAuth

    title: "AspNetCore3.1_Secutiry源码解析_5_Authentication_OAuth" date: 2020-03-24T23:27:45+08:00 ...

  5. AspNetCore3.1_Secutiry源码解析_6_Authentication_OpenIdConnect

    title: "AspNetCore3.1_Secutiry源码解析_6_Authentication_OpenIdConnect" date: 2020-03-25T21:33: ...

  6. AspNetCore3.1_Secutiry源码解析_8_Authorization_授权框架

    目录 AspNetCore3.1_Secutiry源码解析_1_目录 AspNetCore3.1_Secutiry源码解析_2_Authentication_核心流程 AspNetCore3.1_Se ...

  7. IdentityServer4源码解析_1_项目结构

    目录 IdentityServer4源码解析_1_项目结构 IdentityServer4源码解析_2_元数据接口 IdentityServer4源码解析_3_认证接口 IdentityServer4 ...

  8. springcloud源码解析(目录)

    springcloud是一个基于springboot的一站式企业级分布式应用开发框架.springboot为其提供了创建单一项目的便利性,springcloud组合了现有的.常用的分布式项目的解决方案 ...

  9. AspNetCore3.1源码解析_2_Hsts中间件

    title: "AspNetCore3.1源码解析_2_Hsts中间件" date: 2020-03-16T12:40:46+08:00 draft: false --- 概述 在 ...

随机推荐

  1. svn使用3 (转)

    接下来,试试用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突等. 添加文件 在检出的工作副本中添加一个Readme.txt文本文件,这时候这个文本文件会显示为没有版本控制的状态, ...

  2. 第十六届“二十一世纪的计算”学术研讨会 牛津大学肿瘤成像学教授Michael Brady主题演讲

    Computing and Healthcare 牛津大学肿瘤成像学教授Michael Brady主题演讲" title="第十六届"二十一世纪的计算"学术研讨 ...

  3. python循环删除list中的元素

    直接上例子: a = [1,2,3,4,5,6] for i in a: a.remove(i) print(a) 返回:[2, 4, 6] 循环a,想删除a的所有元素,但实际确有数据保留了下来,这是 ...

  4. mongoDB连接信息及生成对应的collection生成代码

    .net,个人封装MONGODDB的操作. using System; using System.Collections.Generic; using System.Linq; using Syste ...

  5. html中的select下拉框

    <select name="effective"> <option value="">请选择</option> <op ...

  6. Maven基本概念和操作

    最近在学Java,找来一个开源项目练手,它是用 Spring Boot 搭建的框架,于是去学 Spring Boot,然而 Spring Boot 需要有 Spring 框架和 Maven 的使用经验 ...

  7. (一)mybatis简易搭建

    mybatis(基础及其搭建) 声明:该文章及该分类中的内容均基于正在开发的项目和一本参考书(深入浅出MyBatis技术原理与实战    by 杨开振) 一.mybatis核心组件(简要介绍) Sql ...

  8. python基础 生成器 迭代器

    列表生成式: a=[1,2,3] print a b=[i*2 for i in range(10)] #i循环10次,每一个i的值乘2就是列表中的值.列表生成式 print b >>[1 ...

  9. Apple store,奢华背后的辛酸

    store,奢华背后的辛酸" title="Apple store,奢华背后的辛酸">    2000年的时候,乔布斯提出了要建造苹果直营店,也就是Apple st ...

  10. 安卓权威编程指南-笔记(第21章 XML drawable)

    在Andorid的世界里,凡事要在屏幕上绘制的东西都可以叫drawable,比如抽象图形,Drawable的子类,位图图形等,我们之前用来封装图片的BitmapDrawable就是一种drawable ...