Skip to main content

保护ASP.net Core应用和API

分类:  IdentityServer4教程 标签:  #Asp.Net core基础 #认证 #授权 #Identity Server #OpenId Connect #OAuth2 发布于: 2023-05-27 22:42:21

我们前面两节讨论和两个应用场景,使用一个客户端通过取得access token访问api, 和一个使用mvc的应用通过交互式登录存取访问Mvc应用,我们本节将使得我们新创建的MvcClient除了交互式认证之外,还要可以在MvcClient中访问API。 IdentityServer4同时支持QAuth2.0和OpenId Connect两种协议,在上一个章节里我们仅仅返回给用户标识资源(CliamPrinpcal, Id Token), 如果我们在配置的时候指定API的Scope, 那么IdentityServer4会同时返回两种token: Id Token 和 Access Token。 修改IdentityServer的Client配置 更改配置非常简单,只需要添加ap

Read more

Identity Server4和Asp.net Core应用交互

分类:  IdentityServer4教程 标签:  #Asp.Net core基础 #认证 #授权 #OpenId Connect #OAuth2 #Identity Server 发布于: 2023-05-27 22:39:27

本节介绍如何添加一个基于用户的通过OpenId Connect交互式认证的实例。 本节介绍的实例是基于上一节实例的,因此我们需要在本节重用上节的代码,我们会在上一节代码的基础上创建一个新的MVC应用,用户会使用IdentityServer进行交互式授权访问该MVC应用。 添加UI 由于本节需要使用用户交互式认证和授权,因此我们需要对我们的IdentitySerer添加必要的UI界面。例如登录,注销,许可,错误页面等等。 IdentityServer4提供一个线程的UI,该UI库可以在这里找到Quickstart UI repo. 可以将该代码clone到本地后应用,也可以根据需要进行更改。 另外也可以直接通过模板在原有项目中添加模板: dotnet n

Read more

Identity Server4教程简介

分类:  IdentityServer4教程 标签:  #Asp.Net core基础 #认证 #授权 #Identity Server #OpenId Connect #OAuth2 发布于: 2023-05-27 22:35:48

简介 本系列的教程提供step by step的形式介绍IdentityServer4的几种常用的场景,这些实例从简单到复杂,建议您按照如下的顺序来学习。 给ASP.net Core应用添加Identity Server4支持 配置Identity Server 给多种客户端分发token 保护web应用和web api应用 使用EF Core添加数据库支持 添加ASP.net Identity支持 准备工作 为了使用IdentityServer4,首先需要应用IdentityServer4的模板,如果是.net core请使用如下的命令行添加模板。 dotnet new -i IdentityServer4.Templates Ok, 我们开始吧!

Read more

Identity Server4常用术语

分类:  IdentityServer4教程 标签:  #认证 #授权 #Identity Server #Asp.Net core基础 #OpenId Connect #OAuth2 发布于: 2023-05-27 22:33:06

本节我们介绍一下相关的专业术语。 术语图示 IdentityServer (标识服务) IdentityServer(标识服务)是一个OpenId Connect服务提供者,它是一个实现了OpenId Connect和OAuth2.0的服务器,当然这个服务器运行相关的代码。 有很多文章或者其他的书籍媒体使用了很多不同的名字,例如Token服务器,标识提供者,授权服务器等等,实际上它们都指的是同一个东西,其内核的功能都是由软件实现的向客户端提供token的服务。 IdentityServer需要完成的工作可以由下述列表体现: 保护你的资源 使用本地账户或者外部账户向需要访问应用的用户提供认证。 提供会话管理和单点登录的功能。 管理和认证客户端应用。 分发

Read more

Identity Server4架构介绍

分类:  IdentityServer4教程 标签:  #Asp.Net core基础 #认证 #授权 #Identity Server #OpenId Connect #OAuth2 发布于: 2023-05-27 22:29:19

目前大多数现代的应用程序架构图如下 (借用IdentityServer4官网的图解释一下) 架构图 一般的交互过程可以通过如下的列表进行描述 用户浏览器和web应用进行交互。 Web应用和Web API进行交互。 基于浏览器的应用和Web API进行交互(例如:SPAs应用) 本地桌面应用和Web API进行交互 f服务端的应用和web api进行交互。 Web API之间的交互。 这个架构是非常典型的例子,每一层都需要保护的资源,都需要实现认证和授权,而且最大的问题是他们的用户有可能都存放在不同的地方,有不同的权限。 为了解决这个问题目前最佳的做法是将各层对于认证和授权的需求独立出来,例如使用我们以前讲过的Token Service,从而可以解决各层之间交

Read more

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