如何在资源上使用令牌和身份授权?

时间:2016-10-27 18:40:33

标签: asp.net-web-api asp.net-core token jwt

我有一个WEB Api,它使用用户帐户进行注册等,还有令牌。 现在我希望使用Token(JWT承载)和Identity来保护所有端点。所以用户不能只有一个有效的令牌,但他也必须登录。 当我使用[Authorize(Policy = "Bearer")]时,我获得了令牌授权,当我使用[Authorize]时,我获得了身份授权,如何将两者结合使用?我想我可以做[授权(政策=“承载,身份”)](基于角色逻辑)但我得到的错误是政策不存在。 有没有办法实现这个?

回购:https://github.com/drakoumel/DatacircleAPI

1 个答案:

答案 0 :(得分:2)

  

当我使用[授权(政策=" Bearer")]时,我获得了令牌授权,当我使用[授权]时,我获得了身份授权,我如何将两者结合起来? [原文如此]

设置ActiveAuthenticationSchemes属性。它采用逗号分隔的方案名称列表。这是一个激活Identity使用的cookie中间件和承载(令牌)中间件的示例。

[Authorize(ActiveAuthenticationSchemes = "Bearer, Identity.Application")]

承载和cookie中间件都将运行并有机会为当前用户创建和附加身份。

说明:

您可以激活所需的任何身份验证方案。默认方案名称位于IdentityAuthentication名称空间中。例如。

Microsoft.AspNetCore.Authentication.JwtBearer
    .JwtBearerDefaults.AuthenticationScheme // "Bearer"

Microsoft.AspNetCore.Identity
    .IdentityCookieOptions.ApplicationCookie // "Identity.Application"

...

另见: