ASP.Net核心承载认证+flutter客户端

ASP.Net Core Bearer Authentication + flutter client

我在 ASP.NET Core 3.1 Web Api 项目中遇到 Bearer Authentication 问题。

我这样配置身份验证:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                .AddJwtBearer(options =>
                {
                    options.RequireHttpsMetadata = false;
                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateIssuer = true,
                        ValidIssuer = AuthHelper.Issuer,
                        ValidateAudience = true,
                        ValidAudience = AuthHelper.Audience,
                        ValidateLifetime = true,
                        IssuerSigningKey = AuthHelper.GetSymmetricSecurityKey(),
                        ValidateIssuerSigningKey = true,
                    };

                });

此外,我在控制器中添加了 [Authorize] 属性,在 Configure 方法中添加了 app.UseAuthorization();

我在 Postman 中配置了请求。我尝试在“授权”选项卡和手动方式(添加“授权”header)中配置授权。同样的结果:我得到了正确的答案,没有任何错误。

但是,当我从 flutter 应用程序发送请求时,出现“404 Not Found”错误。

从 flutter 应用获取请求:

Map<String, String> authHeaders = <String, String>{
    'Content-Type': 'application/json; charset=UTF-8',
    'Authorization': 'Bearer $authToken'
  };
    final response = await http.get(_url, headers: authHeaders);

有什么想法吗?我错过了什么?

我知道问题出在哪里了。 我的controller依然使用Cookies认证方式(不是bearer)

解决方法:[Authorize]替换为[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

为什么 Postman 的请求可以正常工作?

Postman 设置cookie 并记住其他请求的Cookie。 因此,当我测试登录控制器时,邮递员将 .AspNetCore.Identity.Application cookie 添加到自己的集合中。