【发布时间】:2016-04-13 16:26:28
【问题描述】:
我们有一个 Web API 2 REST 服务。我们正在使用基本的 OWIN oAuth 令牌身份验证,并且我们需要 https。我们添加了一个 RequireHttpsAttribute 过滤器,当使用基本 http 发出请求时,它会检查并返回 403 HTTPS Required 错误。
问题是我们的 /token 请求。当我们请求我们的令牌时,我们不会返回 403 错误。在 Startup.Auth.cs 配置文件中,我们设置 AllowInsecureHttp=false。因此,这可以防止用户通过不安全的调用请求令牌。
但是,当进行此调用时,我们会收到 404 Not Found 错误,而不是我们想要的 403 HTTPS Required。谁能帮我弄清楚如何解决这个错误?
我意识到我们没有使用 RequireHttpsAttribute,因为这是正常身份验证之外的事情,这就是我们获取用于该身份验证的令牌的方式。所以我不确定我应该在哪里检查安全连接。我在 GrantResourceOwnersCredentials 方法中尝试了 AuthenticationOAuthProviders 类。在验证用户名和密码之前,我检查了 https,但我无法从那里引发 HTTP 代码错误。
【问题讨论】:
-
我可以在 GrantResourceOwnerCredentials 操作中使用 context.Request.Uri.Scheme 确定请求是否安全,并且它允许我执行 context.setError("HTTPS Required", "HTTP Required for request" ),但它仍然以错误 400 Bad Request 的形式返回。我尝试了 context.Response.StatusCode=403 但它似乎忽略了这一点。
标签: asp.net-web-api2 http-response-codes