使用OAuth授权代码授予类型

时间:2016-02-15 14:25:17

标签: api asp.net-web-api asp.net-web-api2 http-status-codes

我工作的新网站包含以下内容:

  • AngularJS / HTML5前端
  • 支持前端的Web API后端
  • OAuth服务器 - 对用户进行身份验证并提供令牌

未经身份验证的用户的工作流程:

  1. 视图前端,调用Web API以确定是否已通过身份验证
  2. 如果未经过身份验证,则会将用户重定向到OAuth服务器
  3. 成功验证后,浏览器将重定向回使用验证码
  4. 的网站
  5. 验证码已发送至Web API
  6. Web API逻辑从OAuth服务器请求访问令牌
  7. Cookie用于将令牌与用户关联
  8. 其他请求会发送cookie,用于授权用户。
  9. 我的问题是我应该为步骤1的HTTP状态代码发送什么?通常,您发送401表示未经授权,但即使您使用的是HTTP身份验证。由于身份验证由不同的服务器处理,因此没有意义。 403似乎不正确,因为它意味着状态不会改变。

    我应该使用通用400还是自定义400.X代码?

1 个答案:

答案 0 :(得分:1)

虽然在您的案例中发送HTTP 401 Unauthorized作为回复没有任何问题,但更好的选择是发送HTTP 302 Found,这意味着当用户尝试访问前端时 - 在此结束时,在其他位置找到了适用的资源(OAuth Server Url)。

您可以在响应的Location标头中提及OAuth服务器URL,以便客户端将未经身份验证的用户重定向到预期位置。

HTTP 302 Found
Location: https://oath-server-url.com