zoukankan      html  css  js  c++  java
  • [转]ASP.NET Core--根据方案来限制身份

    本文转自:http://www.cnblogs.com/duyao/p/5980105.html

    翻译如下: 

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

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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属性。 此属性接收要使用的验证方案的逗号分隔列表。 例如;

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

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

    1
    [Authorize(ActiveAuthenticationSchemes = "Bearer")]

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

    在策略中选择方案

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

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

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

  • 相关阅读:
    包图网+千图网图片代下
    Java基于二维数组自定义的map
    java23种设计模式-行为型模式-中介者模式
    基于SpringBoot、Redis和RabbitMq的商品秒杀处理
    wps+稻壳vip账号免费分享
    wps+稻壳vip15天领取地址
    图精灵、易图、笔图,vip免费分享
    文库、氢元素、办图、六图,vip免费分享
    快图网、千库,go设计,vip免费分享
    MySQL索引规范及优化
  • 原文地址:https://www.cnblogs.com/freeliver54/p/6259518.html
Copyright © 2011-2022 走看看