Openiddict为未经授权的web api调用返回404而不是401(核心2.0)

时间:2017-10-25 03:43:57

标签: authentication openid-connect asp.net-core-webapi openiddict

我已经在.net core 2.0 web api中设置了openiddict,并且代码和密码流程正常工作。我有测试用例,以确保在请求者未获得授权查找401状态代码时,API中的锁定操作被拒绝。

当这些测试运行时,响应是404找不到而不是401,这使我的测试失败。我知道路线是正确的,因为它允许匿名时返回200。每当我尝试访问未经身份验证锁定的任何操作时,我都会收到404。当您尝试在未经过身份验证的情况下访问资源时,这是openiddict的默认状态吗?无论是从浏览器,邮递员还是从测试用例运行,都会发生此行为。如何配置它返回401?我在下面提供了我的配置。

services.AddOpenIddict<int>(options =>
{
    options.AddEntityFrameworkCoreStores<ApplicationContext>();
    options.AddMvcBinders();
    options.EnableAuthorizationEndpoint("/connect/authorize");
    options.EnableTokenEndpoint("/connect/token");
    options.AllowAuthorizationCodeFlow();
    options.AllowPasswordFlow();
    options.AllowRefreshTokenFlow();
    options.RequireClientIdentification();
    options.SetAccessTokenLifetime(TimeSpan.FromMinutes(1));
    options.SetRefreshTokenLifetime(TimeSpan.FromMinutes(20160));
    options.DisableHttpsRequirement();
 });
services.AddAuthentication()
    .AddFacebook(o => { o.ClientId = settings.FacebookAppID; o.ClientSecret = settings.FacebookAppSecret; })
    .AddOAuthValidation();

1 个答案:

答案 0 :(得分:3)

通过指定对oauth的默认挑战,我能够获得所需的401。仍然很高兴知道它试图重定向到哪里。

s