为什么 Blazor 身份验证库发送带有空负载的访问令牌 JWT?

问题描述 投票:0回答:0

我正在使用 Microsoft.AspNetCore.Components.WebAssembly.Authentication (6.0.15) 与 Auth0 作为 IdP.

在 Blazor WASM 方面,我遵循了标准说明:

在我的 Program.cs 中:

...
builder.Services.AddHttpClient(
    "SecureAPIClient",
    client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
).AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();
...
builder.Services.AddOidcAuthentication(options =>
{
    builder.Configuration.Bind("Auth0", options.ProviderOptions);
    options.ProviderOptions.ResponseType = "code";
    options.ProviderOptions.DefaultScopes.Add("openid");
    options.ProviderOptions.DefaultScopes.Add("profile");
    options.ProviderOptions.DefaultScopes.Add("email");
});
...

然后在我的组件的

OnInilialized
方法中:

...
HttpClient http = _httpClientFactory.CreateClient("SecureAPIClient");
var response = await http.GetFromJsonAsync<POSTS>(getPostsUrl);
...

但是我从 Kestrel 服务器得到的响应是:

www-authenticate Bearer error="invalid_token"

下面是我的网络标签的截图:

我可以从令牌请求中看到access_token,请看下图:

访问令牌 JWT 似乎有一个空负载。

我很难理解为什么。有什么想法吗?

已添加,以获得更多说明

什么可以使 BaseAddressAuthorizationMessageHandler 添加到请求中的 JWT 具有并清空负载?

我的意思是看起来像这样:

header..secret

当我尝试在 jwt.io 上验证 JWT 时出现以下错误:

Warning: Looks like your JWT payload is not a valid JSON object. JWT payloads must be top level JSON object as per https://tools.ietf.org/html/rfc7519#section-7.2
c# blazor openid-connect blazor-webassembly auth0
© www.soinside.com 2019 - 2024. All rights reserved.