翻译如下:

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

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

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "Cookie",
LoginPath = new PathString("/Account/Unauthorized/"),
AccessDeniedPath = new PathString("/Account/Forbidden/"),
AutomaticAuthenticate = false
}); app.UseBearerAuthentication(options =>
{
options.AuthenticationScheme = "Bearer";
options.AutomaticAuthenticate = false;
});

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

注意:

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

使用Authorize Attribute选择方案

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

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

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

[Authorize(ActiveAuthenticationSchemes = "Bearer")]

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

在策略中选择方案

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

options.AddPolicy("Over18", policy =>
{
policy.AuthenticationSchemes.Add("Bearer");
policy.RequireAuthenticatedUser();
policy.Requirements.Add(new Over18Requirement());
});

  在此示例中,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. 【原创】kafka admin源代码分析

    admin包定义了命令行的一些实现 一.AdminOperationException.scala 一个异常类,表示执行admin命令时候抛出的异常 二.AdminUtils.scala admin一 ...

  2. iOS学习笔记——AutoLayout的约束

    iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...

  3. 实用的CSS3属性和使用技巧

    CSS可以改进网站的设计并且开拓网站设计更多的可能性,可以令你的网页更具吸引力.对于前端开发者.网站设计师来说,掌握并熟练应用CSS是一项必不可少的技能. 下面列出了一些非常实用的CSS3属性和使用技 ...

  4. 2、ASP.NET MVC入门到精通——Entity Framework入门

    实体框架(Entity Framework)简介 简称EF 与ADO.NET关系 ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R ...

  5. Java基础学习 -- 接口

    interface是一种特殊的class 接口是纯抽象类 所有的成员函数都是抽象函数: 所有的成员变量都是public static final; 接口是为了方便类的调用 一个类如果要去实现某个接口, ...

  6. 【JavaScript】获取未知类的结构

    目录结构: // contents structure [-] 为什么需要获取类的结构 关于JavaScript中的类 定义类的方法 第一种 第二种 DEMO HTML页面 date文件 注意事项 参 ...

  7. 三道Javascript的练习题

    有语句“var x=0;while(____) x+=2;”,要使while循环体执行10次,空白处的循环判定式应写为: A.x<10B. x<=10C.x<20D.x<=20 ...

  8. AMD and CMD are dead之KMDjs内核之依赖分析

    有人说js中有三座大三:this.原型链和scope tree,搞懂了他们就算是js成人礼.当然还有其他不同看法的js成人礼,如熟悉js的:OOP.AP.FP.DOP.AOP.当然还听说一种最牛B的j ...

  9. 自定义UITableView各种函数

    转自:http://blog.sina.com.cn/s/blog_7e3132ca0100wyls.html 在XCode对应头文件中修改该类所继承的父类: 在对应的.m文件中添加如下代码: 这样就 ...

  10. 基本排序算法——选择排序java实现

    选择排序与冒泡排序有很大的相同点,都是一次遍历结束后能确定一个元素的最终位置,其主要思路是,一次遍历选取最小的元素与第一个元素交换,从而使得一个个元素有序,而后选择第二小的元素与第二个元素交换,知道, ...