翻译如下:

  在某些情况下,比如单页的应用程序,可以与多种认证来方式结合。例如,您的应用程序可能使用基于Cookie的身份验证来登录和JavaScript的请求承载认证。在某些情况下,可能一个授权验证的中间件有多个的实例。两个Cookie中间件,其中一个包含了基本验证,而另外一个当多个条件的认证被触发由于这个用户请求的操作需要额外的安全要求。

  认证方案会被定义当认证的中间件已经配置认证的过程。例如:

  1. app.UseCookieAuthentication(new CookieAuthenticationOptions()
  2. {
  3. AuthenticationScheme = "Cookie",
  4. LoginPath = new PathString("/Account/Unauthorized/"),
  5. AccessDeniedPath = new PathString("/Account/Forbidden/"),
  6. AutomaticAuthenticate = false
  7. });
  8.  
  9. app.UseBearerAuthentication(options =>
  10. {
  11. options.AuthenticationScheme = "Bearer";
  12. options.AutomaticAuthenticate = false;
  13. });

  在如上的配置中,添加了两个认证中间件,一个是Cookie,一个是Bearer。

注意:

  添加多个身份验证中间件时,应确保没有将中间件配置为自动运行。 可以通过将AutomaticAuthenticate选项属性设置为false来执行此操作。 如果你没有加这一点,按方案将不起作用。

使用Authorize Attribute选择方案

  由于我们没有将身份验证中间件配置为自动运行并创建身份,因此在授权时必须选择要使用的中间件。 选择要授权的中间件的最简单方法是使用ActiveAuthenticationSchemes属性。 此属性接收要使用的验证方案的逗号分隔列表。 例如;

  1. [Authorize(ActiveAuthenticationSchemes = "Cookie,Bearer")]
  2. public class MixedController : Controller

  在上面的示例中,Cookie和Bearer中间件将运行,并且有机会为当前用户创建和附加身份。 通过指定单个方案,只有指定的中间件将运行;

  1. [Authorize(ActiveAuthenticationSchemes = "Bearer")]

  在这种情况下,只有具有Bearer方案的中间件将运行,并且任何基于Cookie的身份将被忽略。

在策略中选择方案

  如果您希望在策略中指定所需的方案,则可以在添加策略时设置“身份验证方案”集合。

  1. options.AddPolicy("Over18", policy =>
  2. {
  3. policy.AuthenticationSchemes.Add("Bearer");
  4. policy.RequireAuthenticatedUser();
  5. policy.Requirements.Add(new Over18Requirement());
  6. });

  在此示例中,Over18这个策略将仅对由Bearer中间件创建的身份运行。

ASP.NET Core--根据方案来限制身份的更多相关文章

  1. ASP.NET Core实现 随处可见的基本身份认证

    概览 在HTTP中,基本认证(Basic access authentication,简称BA认证)是一种用来允许网页浏览器或其他客户端程序在请求资源时提供用户名和口令形式的身份凭证的一种登录验证方式 ...

  2. 【asp.net core 系列】13 Identity 身份验证入门

    0. 前言 通过前两篇我们实现了如何在Service层如何访问数据,以及如何运用简单的加密算法对数据加密.这一篇我们将探索如何实现asp.net core的身份验证. 1. 身份验证 asp.net ...

  3. [转]ASP.NET Core--根据方案来限制身份

    本文转自:http://www.cnblogs.com/duyao/p/5980105.html 翻译如下: 在某些情况下,比如单页的应用程序,可以与多种认证来方式结合.例如,您的应用程序可能使用基于 ...

  4. asp.net core 验证码方案

    /// <summary> /// 图片验证码 /// </summary> public class VerificationCodeServices { /// <s ...

  5. JWT+ASP.NET Core集成方案

    JWT JSON Web Token 经过数字签名后,无法伪造,一个能够在各方之间安全的传输JSON对象的开放标准(RFC 7519) 参考前文 [翻译]Introduction to JSON We ...

  6. Asp.Net Core混合使用cookie和JwtBearer认证方案

    自己有时捣鼓一些小型演示项目,服务端主要是提供Web Api功能.为了便于管理,需要在服务端加一些简单的MVC网页,用管理员身份登录,做一些简单的操作. 因此需要实现一个功能,在一个Asp.Net C ...

  7. 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分

    原文:使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)--第1部分 原文链接:https://www.codeproject.com/Articles/5160941/ASP- ...

  8. Asp.Net Core 5 REST API 使用 JWT 身份验证 - Step by Step

    翻译自 Mohamad Lawand 2021年1月22日的文章 <Asp Net Core 5 Rest API Authentication with JWT Step by Step> ...

  9. 理解ASP.NET Core - 基于Cookie的身份认证(Authentication)

    注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 概述 通常,身份认证(Authentication)和授权(Authorization)都会放 ...

随机推荐

  1. C#基础知识三之new关键字

    运算符 new一个Class时,new完成了两方面内容:一是调用new class命令来为实例在托管堆中分配内存;二是调用构造函数来实现对象初始化. 修饰符 显示隐藏从基类继承来的成员.虽然可以不用n ...

  2. C# NPOI导出Excel和EPPlus导出Excel比较

    系统中经常会使用导出Excel的功能. 之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到EPPlus可以用来导出Excel,就自己测了下两者导出上的差异. NPIO官网地址:http: ...

  3. 【WP8】WebBrowser相关

    2014年09月02日更新 今天用了一下WebBrowser,在使用过程中也遇到了一些问题,在这里做一下记录 虽然WebBrowser比较重,会比较影响性能(除非一定要用到它,否则尽量少用),但有时候 ...

  4. 使用canvas实现擦玻璃效果

    体验效果:http://hovertree.com/texiao/html5/25/ 效果图: 代码如下: <!DOCTYPE html> <html> <head la ...

  5. SQL Server 数据库分离与附加

    一.概述 SQL Server提供了“分离/附加”数据库.“备份/还原”数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用的“分离/附加”方法,类似于大家熟悉的“文件拷贝”方法,即 ...

  6. 使用T4模板合并js文件

    不知道该怎么表达,或许直接贴图贴代码更好 前因:在第一个使用angularjs的项目中我将所有的controller写到一个文件里面,深知维护起来那滋味,所以再次使用angularjs的时候,我便把所 ...

  7. java中抽象、分装、继承和多态的理解

    1.抽象.封装装.继承和多态是java面向对象编程的几大特点. 抽象:所谓抽象就是对某件事务,我们忽略我们不关心不需要的部分,提取我们想要的属性和行为,并且以代码的形式提现出来:例如我们需要对一个学生 ...

  8. CentOS 6.4 服务器版安装教程(超级详细图解)

    附:CentOS 6.4下载地址 32位:http://mirror.centos.org/centos/6.4/isos/i386/CentOS-6.4-i386-bin-DVD1to2.torre ...

  9. 十一个行为模式之备忘录模式(Memento Pattern)

    定义: 在不破坏原有封装的情况下,捕获一个对象的内部状态,并在对象之外保存.当对象出错或者无效是,可以根据该备忘录进行恢复. 结构图: Originator:原发类,被记录的对象,包含若干内部状态.一 ...

  10. MVC丶 (未完待续······)

         希望你看了此小随 可以实现自己的MVC框架     也祝所有的程序员身体健康一切安好                                                     ...