我正在使用 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