Skip to main content

OpenID Connect介绍

分类:  Asp.net Core认证和授权 标签:  #Asp.Net core基础 #认证 #授权 #.Net 发布于: 2023-05-27 20:17:42

我们前面一篇学习了Qauth2.0, 那么openidconnect呢? 前面我们学些了Qauth2.0是一个授权的过程,同时授权的对象也没有兼顾到业务的逻辑,如果我们需要更复杂更精细的业务逻辑,那么在API这一侧还是要做很多的工作的,Qauth2.0有一个极大的缺陷导致了这个问题的发生,那就是第三方应用虽然拿到了Access Token 但是实际上它并不知道这个Access Token到底代表了什么,也就是用户只是给了一个黑盒给它。那么openidConnect作为Qauth 2.0的一个扩展,其实际代表的意思就是会将业务逻辑需要的ClaimPrinpcal 放入到其中,给Qauth 2.0添加了一个叫做Id token的返回,这个Id Token就是我们前面文章讲的JWT, 关于

Read more

OAuth2介绍

分类:  Asp.net Core认证和授权 标签:  #Asp.Net core基础 #认证 #授权 #.Net 发布于: 2023-05-27 20:12:30

QAuth2.0 是基于Token的授权方式,我们前面有一篇文章大致讲述过了基于Token认证和授权的历史,为了大家更好的学习和理解QAuth2.0的出现历史必然性,我们还是旧事重提一下,为什么会有Qauth, 它到底解决了哪些问题。 对于Web应用,我们最早的时候提出的解决方案是通过Session来进行认证和授权的。做法很简单,用户提供用户名和密码(或者其他的方式,例如证书或者密钥等等各种手段)到专用的登录的节点,节点验证通过后,会在服务器端生成一个唯一的ID,同时将用户的信息(也就是我们将的ClaimPrinpcal)系列化存在服务器端(内存里,临时文件,数据库,或者分布式缓存等等)同时将这个唯一的ID返回给客户端(通过cookie或者URL或者查询字符串)但是随着应用规模的扩大,

Read more

Asp.net Core中的授权介绍

分类:  Asp.net Core认证和授权 标签:  #Asp.Net core基础 #授权 #.Net 发布于: 2023-05-27 20:02:40

我们今天来讨论ASP.netCore中的授权。 我们前面讨论了认证,我们需要注意的是认证之后会怎么样?认证之后系统会生成一个Identity, 通过各种其他的方式给到客户或者客户应用程序,也就是一个ClaimPrinpcal, 每个ClaimPrincpal 包含多个ClaimIdentity, 每个ClaimIdentity包含多个Claim, 在基于Web应用中最终对应的数据会是HttpContext.User 用于表示认证成功之后的ClaimPrinpcal. 但是在认证这一侧,对应的是AuthorizationHandlerContext的User属性,也就是AuthorationHandlerContext.User, 需要注意的是HttpContext的User属性和A

Read more

Claim介绍

分类:  Asp.net Core认证和授权 标签:  #Asp.Net core基础 #认证 #.Net 发布于: 2023-05-27 18:57:15

我们前面一章聊了我们之前的认证是如何做的,基于Session和基于token的认证方式的不同,其中这里面都有一个用户登录之后,都需要在某些地方保存和用户相关的信息,例如用户的ID, 用户的用户名,用户邮件等等信息,在Session的时代是直接在服务器端保存这些信息,在使用token的时候,是保存token里。 那么在ASP.net Core中同样我们也是需要保存这些信息的,但是在ASP.net Core中对这些信息做了一些抽象。 为了理解这些抽象,我们先来看一个实际生活中的例子: 假如你需要去银行柜台存钱,你拿了钱到达了柜台之后,柜台需要确认你的身份,然后才能为你办理存钱的业务,你需要出示一些相关的证件来证明你就是你,证明了你是你本人之后才能将你和你的银

Read more

Json Web Token介绍

分类:  Asp.net Core认证和授权 标签:  #Asp.Net core基础 #认证 #.Net 发布于: 2023-05-27 18:53:17

以前最简单的办法是基于Session的方式,所谓的Session的方式是系统向用户展示一个登录的界面,用户提供正确的依据(例如用户密码)在登录处登录成功后(SignIn), Web系统针对这一次生成一个唯一的ID,同时服务器侧生成和用户相关的信息,例如一个用户对象,这个用户对象里可能保存各种和用户相关的信息,例如用户的ID, 用户的电话等等信息,这部分信息系列化之后存放在服务器侧,然后将生成的唯一ID存于cookie或者是URL查询字符串的形式返回给客户端,用户端每次需要访问资源的时候会这个唯一的ID以cookie或者是以为header值或者是URL查询字符串等形式带入到服务器侧,服务器根据ID 再次从服务器侧查询到和ID相关的用户信息,需要的时候反序列化出来就可以了。 这个

Read more

使用Cookie完成Asp.net Core认证

分类:  Asp.net Core认证和授权 标签:  #Asp.Net core基础 #认证 #.Net 发布于: 2023-05-27 18:46:16

关于如何使用ASP.netCore 提供的Identity库,我们前面通过几篇文章简单的带领大家入门了,同时我们也捎带讲述一些最为基本的ASP.net Core认证的基本理念,那么接下来我们将讲述ASP.net Core提供的最基本的认证的设计理念和框架,当然大家也可以继续使用Identity库。 今天我们这篇文章算是开篇,简简单单的一个入门的教程,如何使用CookieAuthencationSchema来认证用户,这篇讲完之后,我们讨论一下ASP.net Core对于认证的基本解决方案和理念,讲完这个之后再讲述授权。 还是先复习一下基本的理论:ASP.net Core主要是使用接口IAuthencationService服务配合AuthencitationHandler以及Ha

Read more

配置Asp.net Core Identity

分类:  Asp.net Core认证和授权 标签:  #Asp.Net core基础 #认证 #.Net 发布于: 2023-05-27 18:35:23

默认情况Identity使用默认的值对密码,Cookie, 声明进行配置,但是你可以在Startup.configureService中通过IdentityOption对Identity进行配置,例如: 配置的方法如上图所示,但是必须要保证配置在调用AddIdentity或者AddDefaultIdentity之后。 声明标识(Claim Identity)配置 这里我们有必要理解一下Claim和Claim Identity这两个概念,Claim这里我们表示为声明,例如你进入公司的工牌,那么工牌就是我们的声明标识(Claim Identity), 但是工牌上的员工工号就是我们的声明(Claim),

Read more

定制Asp.net Core Identity

分类:  Asp.net Core认证和授权 标签:  #Asp.Net core基础 #认证 #.Net 发布于: 2023-05-27 18:30:23

由于ASP.net Core的Identity库是以RCL库的形式发布的,因此我们需要对UI进行定制的话,我们首先需要覆盖Identity自带的所有的页面,请参考文章 使用脚手架工具覆盖所有的文件,然后你可以在目录Area/Identity下找到所有的文件,根据自己的需要进行UI的更改就可以了,同时注意在使用脚手架工具时选择自己项目中的模板所在的位置:

Read more

Asp.net Core Identity代码自动生成

分类:  Asp.net Core认证和授权 标签:  #Asp.Net core基础 #认证 #.Net 发布于: 2023-05-27 18:19:13

我们前面两篇已经讨论了ASP.netCore的认证基本概念和ASP.net Core Identity基本工具的介绍。大家有兴趣的话,可以翻到之前的文章。 我们这一章介绍一下VisualStudio提供的Identity代码生成工具,Identity Scaffold, 本章要求你有Visual studio, Visual Studio提供三个版本,小型的开发其实只需要社区版就可以了,另外及其推荐Visual Studio 增加两个插件: Github & VsVim, 这两个插件简直是神器。 不得不再吹一句:VisualStuido 真不愧是宇宙中第一的开发利器。真香! 首先我们来使用Visualstuido来快速的生成一个基于ASP.net Core Identit

Read more