Asp.net 核心 使用策略授权用户

本文关键字:策略 授权 用户 net 核心 Asp | 更新日期: 2023-09-27 18:36:22

>我正在尝试使用从请求标头发送的持有者令牌授权用户。我在资源服务器的启动文件中添加了此代码。

services.AddAuthorization(auth =>
{
   auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()                        
  .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
  .RequireAuthenticatedUser().Build());
});

这是我在控制器中的方法。

[Authorize("Bearer")]
[HttpGet]
[Route("list")]
public IEnumerable<Products> List()
{
    string Authorization = Request.Headers["Authorization"];
}

应用程序显示错误 401 未经授权,即使我有令牌

我在标头请求中发送此令牌

授权:承载"xyz"

Asp.net 核心 使用策略授权用户

若要使用持有者令牌,必须在配置方法上添加以下代码

public void Configure(IApplicationBuilder app) {
    app.UseJwtBearerAuthentication(options => {
        options.AutomaticAuthenticate = true;
        options.AutomaticChallenge = true;
        options.Audience = "OAuth:Audience";
        options.Authority = "OAuth:Authority";
        options.ConfigurationManager = new ConfigurationManager<OpenIdConnectConfiguration>(
            metadataAddress: options.Authority + ".well-known/openid-configuration",
            configRetriever: new OpenIdConnectConfigurationRetriever(),
            docRetriever: new HttpDocumentRetriever() { RequireHttps = false });
    });
}

您还需要一个中间件来处理授权过程。看看AspNet.Security.OpenIdConnect.Server和OpenIddict