最近我们开始使用IdentiyServer 4(非常棒!)。 我们有一个身份服务,所有其他服务正在使用,通常使用JWT。 问题是,如果令牌无效(过期或完全错误)而不是获得401响应(未经授权),我们只会得到500(内部服务器错误)。
我做错了吗? 我甚至尝试使用他们的官方代码样本作为我们的身份服务,最终得到了相同的结果。
这是Startup.cs的相关行:
ConfigureServices:
services.AddMvcCore()
.AddAuthorization()
.AddJsonFormatters();
配置:
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = Configuration["URLs:IdentityServer"],
RequireHttpsMetadata = false,
ApiName = "api1"
});
以下是例外:
执行请求时发生了未处理的异常 System.InvalidOperationException:未指定authenticationScheme,并且未找到DefaultChallengeScheme。
堆栈追踪:
在 Microsoft.AspNetCore.Authentication.AuthenticationService.d__11.MoveNext() ---从抛出异常的先前位置开始的堆栈跟踪结束--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务) Microsoft.AspNetCore.Mvc.ChallengeResult.d__14.MoveNext()
(还有更多,但我认为不相关)