如何从identityServer4获得401响应

时间:2018-05-01 18:33:19

标签: c# asp.net-core identityserver4

最近我们开始使用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()

(还有更多,但我认为不相关)

1 个答案:

答案 0 :(得分:0)

解决。我似乎使用旧版本的IdentityServer4。升级到最新版本(2.6.0),不得不改变一些配置流程(根据official docs),它解决了问题。