Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api 如何在资源上使用令牌和身份授权?_Asp.net Web Api_Asp.net Core_Token_Jwt - Fatal编程技术网

Asp.net web api 如何在资源上使用令牌和身份授权?

Asp.net web api 如何在资源上使用令牌和身份授权?,asp.net-web-api,asp.net-core,token,jwt,Asp.net Web Api,Asp.net Core,Token,Jwt,我有一个WEB Api,它使用用户帐户进行注册等,还使用令牌。 现在,我希望使用令牌(JWT承载)和标识来保护所有端点。因此,用户不仅拥有有效的令牌,还必须登录。 当我使用[Authorize(Policy=“Bearer”)]我获得代币授权,当我使用[Authorize]我获得身份授权时,我如何将两者结合起来?我假设我可以执行[Authorize(Policy=“Bearer,Identity”)](基于角色逻辑),但我得到了一个错误,即该策略不存在。 有没有办法实现这一点 回购: 当我使用[

我有一个WEB Api,它使用用户帐户进行注册等,还使用令牌。 现在,我希望使用令牌(JWT承载)和标识来保护所有端点。因此,用户不仅拥有有效的令牌,还必须登录。 当我使用
[Authorize(Policy=“Bearer”)]
我获得代币授权,当我使用
[Authorize]
我获得身份授权时,我如何将两者结合起来?我假设我可以执行[Authorize(Policy=“Bearer,Identity”)](基于角色逻辑),但我得到了一个错误,即该策略不存在。 有没有办法实现这一点

回购:

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

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

[Authorize(ActiveAuthenticationSchemes = "Bearer, Identity.Application")]
承载器和cookie中间件都将运行,并有机会为当前用户创建和附加标识

备注:

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

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

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

...
另见:


Hmm我应用了该行,现在虽然令牌无效(终身无效),但它正常进行,并允许用户访问资源,因为他已登录。它不需要两种身份验证才能通过吗?这是我的控制器(getUser())和我的startup.cs,因此我得到的信息是:Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerMiddleware[7]承载未经身份验证。失败消息:IDX10223:生存期验证失败。令牌已过期。和信息:Microsoft.AspNetCore.Authentication.Cookies.Cookie AuthenticationMiddleware[3]HttpContext。用户通过自动身份验证从authenticationScheme:Identity.Application合并。信息:Microsoft.AspNetCore.Authentication.Cookies.Cookie AuthenticationMiddleware[8]AuthenticationScheme:Identity.Application已成功通过身份验证。根据文档,这两个策略都将进行更改以填充用户,“有没有可能强制两者都必须通过?”德拉库梅尔让我看看我是否理解正确。您希望强制用户拥有令牌和Cookie。是吗?是的。问题是我需要一个安全的应用程序,我不能让别人窃取用户令牌,而不是cookie并使用它。