Asp.net 核心授权仅对 xamarin 表单应用程序失败

Asp.net Core authorization fails only for xamarin forms application

我开发了一个简单的应用程序来练习。 组合是 ASP.NET CORE 和 JWT 令牌。

在我的 asp.net 核心 3.1 服务器上,我有这个 DI 代码:

services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(options =>
                {
                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateIssuer = true,
                        ValidateAudience = true,
                        ValidateLifetime = true,
                        ValidateIssuerSigningKey = true,
                        ValidIssuer = configuration["jwt:Issuer"],
                        ValidAudience = configuration["jwt:Audience"],
                        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["jwt:Key"]))
                    };
                });

我可以轻松连接 Postman 或我的 BlazorApp 以生成令牌并使用令牌使用其他端点。 在 Blazor 上,我只需要插入一个 DefaultHeader:

_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", token);

现在,我正在尝试对 Xamarin Forms 应用执行相同的操作。 我尝试在默认 header 上使用生成的令牌,但我收到了未经授权的响应。

为了调试 Xamarin Forms 应用程序,我必须将本地主机端点名称更改为 127.0.0.1(这样模拟器就可以到达我机器上的 asp.net API)。

我试图将我的 JWT 令牌的颁发者更改为 127.0.0.1 而不是本地主机,但没有成功。

有人可以帮忙吗?

提前致谢。

2天后我拿到了

我的 asp.net 核心 api 使用 HttpsRedirect 而我的 Xamarin Mobile 没有指向 HTTPS 端口。

我不知道为什么,因为 postman 和 blazor 使用两个端点(HTTP 和 https 端口),但 Xamarin 自从我使用 https 端点后就开始工作了。

现在好了。 还是谢谢