Web API 403使用承载令牌禁止在网络外部使用

问题描述 投票:0回答:1

我有一个使用oAuth2的Web API,它包含允许匿名和安全调用的API混合。我已将代码部署到我的网络上的单独服务器,并使用RESTer(类似于POSTMAN)验证调用是否正常工作。如果我从网络外部进行相同的呼叫,则只有设置为使用ExternalBearer令牌的呼叫才会失败。匿名电话成功。

我检查了这个对我不起作用的解决方案。 HTTP 403 Forbidden: Access is denied ASP.NET Web API

我还在部署服务器上确保用户帐户可以访问具有完全控制权的目录。

我的匿名调用(在/ token调用旁边)有[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=""
asp.net-web-api oauth-2.0 iis-8.5
1个回答
0
投票

有一个防火墙问题,专门阻止客户端直接进行身份验证。我必须有一个IT资源打开Forefront TMG属性,进入Authentication Delegation选项卡,并将方法设置为“无委托,客户端无法直接进行身份验证”以外的其他方法

这个SO线程可能是相同的解决方案,但海报没有提到他们的解决方案究竟是什么:WebAPI : 403 Forbidden after publish website

© www.soinside.com 2019 - 2024. All rights reserved.