我使用的oauth2具有API,允许匿名和担保呼叫的混合物的Web API。 我已经部署了代码到我的网络上的一个单独的服务器,并使用RESTER(类似于邮差)的呼叫无效验证。 如果我让来自网络外部的相同的调用,只有被设置为使用ExternalBearer令牌失败的调用。 匿名电话成功。
我检查了这个解决方案,它并没有为我工作。 HTTP 403禁止访问:访问被拒绝的ASP.NET Web API
我也确保了用户帐户访问具有完全控制的目录中部署服务器上。
我的匿名电话(旁/令牌调用)有[使用AllowAnonymous]和[HttpPost]注解。 我的安全呼叫有[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]和[HttpPost]注解。
[Authorize]
[RoutePrefix("api/Lookups")]
public class MySettingsClass : ApiController
/* Constructor omitted for readability*/
[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]
[HttpPost]
[Route("GetSettings")]
public Settings GetSettings(GetSettingsCommand command)
{
//Do something here
return settings;
}
在这一点上,我怀疑IIS不会以某种方式正确配置或防火墙是做什么的,但我不知道。 我检查了服务器上的IIS日志,我可以看到请求进来。不幸的是,日志说比它接收到的请求罢了。 日志确实给401的SC-状态为比所显示的403不同的请求。
在客户端上显示实际403错误:
403 Forbidden ( The server denied the specified Uniform Resource Locator(URL). Contact the server administrator.)
更新:当我启用失败请求跟踪我得到的日志在此警告IIS。
ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="401", HttpReason="Unauthorized", HttpSubStatus="0", ErrorCode="The operation completed successfully.(0x0)", ConfigExceptionInfo=""