.Net Core Web API承载颁发者无效



我已经基于最新的Microsoft模板编写了一个Blazor WASM应用程序。在开发模式下,一切都很好,但在将其发布到Azure应用程序服务后,我在调用API时随机获得401未经授权,查看返回的头,我得到

WWW-Authenticate: Bearer error="invalid_token", error_description="The issuer 'https://*domain*.azurewebsites.net' is invalid"

这是当客户端使用https://.azurewebsites.net客户端时。因此它与网络API相匹配。

我还有一个附加到应用程序服务的自定义域,这意味着还有https://www.domain.co.uk和https://domain.co.uk都是SSL。

我已经检查了JWT令牌,它包含了我调用的网站版本的正确URL。

有时一切正常,但60%的时间它允许用户登录,然后在API调用中失败。我似乎无法将其跟踪到1个域名或类似过期登录的模式。如果您先注销,然后再重新登录,这并不能解决问题。

配置看起来像这个

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseWebAssemblyDebugging();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseHttpsRedirection();
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
app.UseRouting();
app.UseIdentityServer();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html");
});
}

感谢任何正确方向的帮助或提示

干杯

Dave

在我的案例中,它是由应用程序服务的Linux环境引起的。现在文档对此有了明确的说明:CCD_ 1。

我就是这样设置的:

services.Configure<JwtBearerOptions>(
IdentityServerJwtConstants.IdentityServerJwtBearerScheme, 
options =>
{
options.Authority = "https://my-site.azurewebsites.net";
#if DEBUG
options.Authority = "https://localhost:5001";
#endif
});

相关内容

  • 没有找到相关文章

最新更新