我已经在.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();
答案 0 :(得分:3)
通过指定对oauth的默认挑战,我能够获得所需的401。仍然很高兴知道它试图重定向到哪里。
s