【问题标题】:iOS 8 shows popup for basic auth on 401 for OAuthiOS 8 在 401 上为 OAuth 显示基本身份验证弹出窗口
【发布时间】:2014-12-05 13:22:46
【问题描述】:

我有一个发布到内部 API 的 JavaScript 应用,该 API 是 OAuth2,我们在请求的标头中包含访问令牌:

Authorization:Bearer 2267a056aab4100228a046267bfdfef6c2d73aaec66403eddf854914fa829310

当我们尝试使用过期令牌发布到 api 时,我们会返回带有此标头的 401(我们应该这样做):

WWW-Authenticate:OAuth realm='OAuth API', error='expired_token'

但在 iOS 上,这会触发本机“基本身份验证”弹出窗口,要求输入用户名和密码,这不仅是错误的(我很确定),而且还会让我们的用户感到困惑。

有没有办法让 iOS 不弹出这个窗口?

【问题讨论】:

    标签: javascript ios oauth-2.0


    【解决方案1】:

    这似乎与 invalid grant 的错误响应匹配,并允许 400 错误响应。

    https://www.rfc-editor.org/rfc/rfc6749#section-5.2

    invalid_grant - 提供的授权授权(例如,授权 代码、资源所有者凭据)或刷新令牌是 无效、过期、撤销、不匹配重定向 授权请求中使用的 URI,或者被发给 另一个客户。

    410 Gone 并不能真正用作响应,因为令牌仍然存在,它只是过期或无效。

    【讨论】:

      【解决方案2】:

      我会亲自使用

      410 走了

      请求的资源在服务器上不再可用且无法转发 地址是已知的。这种情况预计会被视为永久性的。

      【讨论】:

      • 这不符合规范“授权服务器必须以 HTTP 401(未授权)响应”oauth2 spec
      • 这不适用于刷新令牌或过期令牌。查看第 5.2 节。文档的错误响应。
      猜你喜欢
      • 2018-09-14
      • 2020-11-25
      • 2016-10-13
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多