更正要使用 OAuth 授权代码授权类型返回的 HTTP 状态代码



我正在工作的新网站具有以下组件:

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

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

  1. 视图前端,调用 Web API 以确定是否经过身份验证
  2. 如果未经过身份验证,用户将被重定向到 OAuth 服务器
  3. 身份验证成功后,浏览器将使用身份验证代码重定向回网站
  4. 身份验证代码发送到 Web API
  5. Web API 逻辑从 OAuth 服务器请求访问令牌
  6. Cookie 用于将令牌与用户相关联
  7. 其他请求发送用于授权用户的 cookie。

我的问题是我应该为步骤 1 的 HTTP 状态代码发送什么?通常,您发送 401 不是未经授权的,但那是如果您使用的是 HTTP 身份验证。由于身份验证由不同的服务器处理,因此这没有意义。403 似乎也不正确,因为它暗示状态不会改变。

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

尽管在您的情况下发送HTTP 401 Unauthorized作为响应没有错,但更好的选择是发送HTTP 302 Found,这意味着当用户尝试访问前端视图时,在这种情况下适用的资源(OAuth Server URL(是在其他地方找到的。

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

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

相关内容

最新更新