ASP.NET Core

ASP.NET Core策略授权和 ABP 授权

拟墨画扇 提交于 2020-08-13 03:14:09
目录 ASP.NET Core 中的策略授权 策略 定义一个 Controller 设定权限 定义策略 存储用户信息 标记访问权限 认证:Token 凭据 颁发登录凭据 自定义授权 IAuthorizationService ABP 授权 创建 ABP 应用 定义权限 Github 仓库源码地址 https://github.com/whuanles/2020-07-12 ASP.NET Core 中的策略授权 首先我们来创建一个 WebAPI 应用。 然后引入 Microsoft.AspNetCore.Authentication.JwtBearer 包。 策略 Startup 类的 ConfigureServices 方法中,添加一个策略的形式如下: services.AddAuthorization(options => { options.AddPolicy("AtLeast21", policy => policy.Requirements.Add(new MinimumAgeRequirement(21))); }); 这里我们分步来说。 services.AddAuthorization 用于添加授权方式,目前只支持 AddPolicy。 ASP.NET Core 中,有基于角色、声明、策略的三种授权形式,都是使用 AddPolicy 来添加授权处理。 其中,有两个

基于.NetCore3.1系列 —— 认证授权方案之授权揭秘 (下篇)

一世执手 提交于 2020-08-13 03:09:25
一、前言 回顾: 基于.NetCore3.1系列 —— 认证授权方案之授权揭秘 (上篇) 在上一篇中,主要讲解了授权在配置方面的源码,从添加授权配置开始,我们引入了需要的授权配置选项,而不同的授权要求构建不同的策略方式,从而实现一种自己满意的授权需求配置要求。 在这一节中,继续上一篇的内容往下深入了解授权内部机制的奥秘以及是如何实现执行授权流程的。 二、说明 在上一篇中,我们通过定义授权策略,查看源码发现,在对授权配置 AuthorizationOptions 之后,授权系统通过DI的方式注册了几个核心的默认实现。 之前我们进行对步骤一的授权有了大概了解,所以下面我们将对步骤二进行的注册对象进行说明。 三、开始 3.1 IAuthorizationService 授权服务接口,用来确定授权是否成功的主要服务,接口的定义为 public interface IAuthorizationService { Task<AuthorizationResult> AuthorizeAsync(ClaimsPrincipal user, object resource, IEnumerable<IAuthorizationRequirement> requirements); Task<AuthorizationResult> AuthorizeAsync(ClaimsPrincipal

基于ASP.NET core的MVC站点开发笔记 0x01

社会主义新天地 提交于 2020-08-13 03:05:57
基于ASP.NET core的MVC站点开发笔记 0x01 我的环境 OS type:mac Software:vscode Dotnet core version:2.0/3.1 dotnet sdk 下载地址: https://dotnet.microsoft.com/download/dotnet-core/2.0 准备 先到上面提供的下载地址,下载对应平台的 dotnet 装上,然后在命令行窗口输入 dotnet --version 查看输出是否安装成功。 然后,安装 visual studio code ,安装之后还需要安装 C# 拓展,要不然每次打开 cs 文件都会报错。 创建项目 新建一个空目录,例如 mvc-test 。 使用命令 dotnet new 查看可以新建的项目类型: 第一次尝试,使用 ASP.NET Core Empty 就可以,代号是 web ,使用命令 dotnet new web 就可以新建一个空项目,项目的名称就是当前目录的名字 mvc-test 。 项目结构与默认配置 目录主要结构和文件功能如下: Program.cs 是程序的主类, Main 函数在这里定义,内容大致可以这么理解: CreateDefaultBuilder 函数会使用默认的方法载入配置,例如通过读取 launchSettings.json 确定当前的发布环境: webhost

Asp.net core 3.1单点登录

百般思念 提交于 2020-08-12 17:47:08
单点登录实现原理(SSO) 简介 单点登录是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的保护资源,若用户在某个应用系统中进行注销登录,所有的应用系统都不能再直接访问保护资源,像一些知名的大型网站,如:淘宝与天猫、新浪微博与新浪博客等都用到了这个技术。 原理 单点登录 有一个独立的认证中心,只有认证中心才能接受用户的用户名和密码等信息进行认证,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,当用户提供的用户名和密码通过认证中心认证后,认证中心会创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌即得到了授权,然后创建局部会话。 示例: 下面对上图进行解释: 当用户还没进行用户登录的时候 用户去访问系统1的保护资源 ,系统1检测到用户还没登录,跳转至SSO认证中心,SSO认证中心也发现用户没有登录,就跳转到用户至认证中心的登录页面 用户在登录页面提交用户相应信息后,认证中心会校验用户信息,如果用户信息正确的话认证中心就会创建与该用户的全局会话(全局会话过期的时候,用户就需要重新登录了。全局会话中存的信息可能有令牌,用户信息,及该在各个系统的一些情况),同时创建授权令牌,然后进行下一步,否则认证中心给出提示(用户信息有误),待用户再次点击登录的时候,再一次进行校验用户信息

网关项目 ReverseProxy

别说谁变了你拦得住时间么 提交于 2020-08-12 09:06:07
浅析微软的网关项目 -- ReverseProxy 浅析微软的网关项目 ReverseProxy Intro # 最近微软新开了一个项目 ReverseProxy ,也叫做 YARP(A Reverse Proxy) 官方介绍如下: YARP is a reverse proxy toolkit for building fast proxy servers in .NET using the infrastructure from ASP.NET and .NET. The key differentiator for YARP is that it's been designed to be easily customized and tweaked to match the specific needs of each deployment scenario. 这是一个基于 .net (core) 和 asp.net (core) 的用来代理服务器的反向代理组件,YARP的主要区别在于它的设计易于定制和调整,以适应每种部署方案的特定需求。 你可以基于这个项目来构建自己的 API Gateway 项目 YARP 设计 # YARP 主要是基于 endpoint 路由 + asp.net core 中间件来设计实现的 来看一下官方的示例 Startup 配置: Copy

ASP.NET Core Blazor Webassembly 之 渐进式应用(PWA)

爱⌒轻易说出口 提交于 2020-08-12 06:24:53
Blazor支持渐进式应用开发也就是PWA。使用PWA模式可以使得web应用有原生应用般的体验。 什么是PWA PWA应用是指那些使用指定技术和标准模式来开发的web应用,这将同时赋予它们web应用和原生应用的特性。 例如,web应用更加易于发现——相比于安装应用,访问一个网站显然更加容易和迅速,并且你可以通过一个链接来分享web应用。 在另一方面,原生应用与操作系统可以更加完美的整合,也因此为用户提供了无缝的用户体验。你可以通过安装应用使得它在离线的状态下也可以运行,并且相较于使用浏览器访问,用户也更喜欢通过点击主页上的图标来访问它们喜爱的应用。 PWA赋予了我们创建同时拥有以上两种优势的应用的能力。 这并不是一个新概念——这样的想法在过去已经在web平台上通过许多方法出现了多次。渐进式增强和响应式设计已经可以让我们构建对移动端友好的网站。在多年以前的Firefox OS的生态系统中离线运行和安装web应用已经成为了可能。 PWAs, 不但如此,更是提供了所有的甚至是更多的特性,来让web更加优秀。 引用自MDN 说人话就是PWA可以让你的web程序跟一般应用一样运行,有桌面图标,能离线,没有浏览器地址栏,一切看起来想个普通的程序/APP。 新建Blazor PWA程序 使用VS新建一个Blazor程序,选择Webassembly模式,勾选支持PWA。

asp.net core 3.1 MVC/WebApi JSON 全局配置

本小妞迷上赌 提交于 2020-08-12 05:44:27
原文: asp.net core 3.1 MVC/WebApi JSON 全局配置 asp.net core 3.1 MVC/WebApi JSON 全局配置 System.Text.Json(default) startup配置代码如下: using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Unicode; public void ConfigureServices (IServiceCollection services) { services.AddJsonOptions(options => { //格式化日期时间格式 options.JsonSerializerOptions.Converters.Add( new DatetimeJsonConverter()); //数据格式首字母小写 //options.JsonSerializerOptions.PropertyNamingPolicy =JsonNamingPolicy.CamelCase; //数据格式原样输出 options.JsonSerializerOptions.PropertyNamingPolicy = null ; //取消Unicode编码 options.JsonSerializerOptions

asp.net Core 中AuthorizationHandler 实现自定义授权

一世执手 提交于 2020-08-12 04:43:16
原文: asp.net Core 中AuthorizationHandler 实现自定义授权 前言 ASP.NET Core 中 继承的是AuthorizationHandler ,而ASP.NET Framework 中继承的是AuthorizeAttribute. 它们都是用过重写里面的方法实现过滤请求的。 现在我们实现如何在 ASP.NET Core MVC 实现自定义授权。 关于AuthorizationHandler 详细介绍可以看这里 https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-2.2#authorization-handlers 如何自定义授权 比如我们后台有个博客管理功能,那我们可以新建一个Blog的控制器,比如BlogController 里面有添加,删除,编辑等功能,分别是Add,Delete,Edit 代码如下 public class BlogController : Controller { public IActionResult Index() { return View(); } /// <summary> /// 博客添加页面 /// </summary> /// <returns></returns>

【asp.net core 系列】10 实战之ActionFilter

北城以北 提交于 2020-08-12 03:35:50
0.前言 在上一篇中,我们提到了如何创建一个UnitOfWork并通过ActionFilter设置启用。这一篇我们将简单介绍一下ActionFilter以及如何利用ActionFilter,顺便补齐一下上一篇的工具类。 1. ActionFilter 介绍 ActionFilter全称是ActionFilterAttribute,我们根据微软的命名规范可以看出这是一个特性类,看一下它的声明: [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] public abstract class ActionFilterAttribute : Attribute, IActionFilter, IFilterMetadata, IAsyncActionFilter, IAsyncResultFilter, IOrderedFilter, IResultFilter 这是一个允许标注在类和方法上的特性类,允许多个标记,标注之后子类会继承父类的特性。然后,这个类是一个抽象类,所以我们可以通过继承ActionFilterAttribute来编写自己的ActionFilter。 1.1 ActionFilter的四个方法

asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权

时光总嘲笑我的痴心妄想 提交于 2020-08-12 02:42:40
开发了一个公司内部系统,使用asp.net core 3.1。在开发用户认证授权使用的是简单的cookie认证方式,然后开发好了要写几个接口给其它系统调用数据。并且只是几个简单的接口不准备再重新部署一个站点,所以就直接在MVC的项目里面加了一个API区域用来写接口。这时候因为是接口所以就不能用cookie方式进行认证,得加一个jwt认证,采用多种身份验证方案来进行认证授权。 认证授权 身份验证是确定用户身份的过程。 授权是确定用户是否有权访问资源的过程。 在 ASP.NET Core 中,身份验证由 IAuthenticationService 负责,而它供身份验证中间件使用。 身份验证服务会使用已注册的身份验证处理程序来完成与身份验证相关的操作。 认证-->授权 关于认证授权我们要区分认证和授权是两个概念,具体可查看MSDN官方文档也可以搜索其它文章看看,讲的很多。其中包括OAuth 2.0 以及jwt的相关知识都有很多资料并且讲解的很好。 身份认证 身份验证方案由 Startup.ConfigureServices 中的注册身份验证服务指定: 方式是在调用 services.AddAuthentication 后调用方案特定的扩展方法(例如 AddJwtBearer 或 AddCookie)。 这些扩展方法使用 AuthenticationBuilder.AddScheme