[转]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中间件创建的身份运行。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值