iOS 8显示了针对OAuth 401的基本身份验证的弹出窗口

时间:2014-12-04 17:48:25

标签: javascript ios oauth-2.0

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

Authorization:Bearer 2267a056aab4100228a046267bfdfef6c2d73aaec66403eddf854914fa829310

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

http://tools.ietf.org/html/rfc6749#section-5.2

  

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

410 Gone并没有真正作为回应,因为令牌仍在那里,它只是过期或无效。

答案 1 :(得分:0)

我个人会用

  

410 Gone

请求的资源在服务器上不再可用,也没有转发 地址是已知的。预计这种情况将被视为永久性的。