通过OAuth 2.0令牌撤销提高帐户安全性
Posted 谷歌开发者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过OAuth 2.0令牌撤销提高帐户安全性相关的知识,希望对你有一定的参考价值。
文|Google Apps 产品主管 Michael Winser 和 Google Apps 开发顾问 Wesley Chun
为了更好地保护用户安全,我们为自 2016 年 10 月 5 日起生效的企业 Gmail 用户提高帐户安全性。目前有一项新政策即将生效,根据此政策,Google Apps 网域中的用户在此日期或此日期之后 更改其密码时,将会导致使用基于 Gmail 的授权范围访问用户邮箱的应用被撤销 OAuth 2.0 令牌。请注意,在此日期,用户不会注意到任何特定的变化,而且其应用也会继续正常工作。只有当用户在此日期之后更改密码时,其 Gmail 相关的令牌才会变为无效状态。
开发者应修改其应用,以处理因撤销的令牌而导致的 HTTP 400 或 401 错误代码,并提示其用户再次完成 OAuth 流程以便为这些应用重新授权,使其能够继续访问用户邮箱(更多详细信息,请参阅下文)。去年年底,我们宣布对我们的安全政策进行了一项类似的计划性更改,此项更改影响了一组更为广泛的授权范围。之后我们决定不再向 Apps 客户继续推行该项更改,并开始开发上述影响范围较小的更新内容。
令牌撤销本身并不是一项新功能。一直以来,用户都能在安全检查中撤销应用的访问权限,Google Apps 管理员也能在管理控制台中执行相同的操作。不仅如此,长期未使用的令牌也一直遵循到期或撤销要求。我们对安全政策所做的这项更改可能会增加应用所见的令牌撤销率,因为在某些情况下,系统现在会自动执行该过程。
此项政策更改也包括移动邮件应用。例如,在 ios 上使用原生邮件应用的用户在更改其密码后,必须使用其 Google 帐户凭据进行重新授权。第三方移动邮件应用的这一新行为与 iOS 和 android 上的 Gmail 应用的当前行为一致,后者在重设密码时也要求进行重新授权。
当用户更改其密码时,短期访问令牌和长期刷新令牌都会被撤销。如果使用撤销的访问令牌访问 API 或生成新的访问令牌,将会产生 HTTP 400 或 401 错误。如果您的应用使用库来访问 API 或处理 OAuth 流程,则可能以异常的形式引发这些错误。有关如何捕获这些异常的信息,请查阅库文档。注意:有多种原因可能导致 HTTP 400 错误,其中因撤销的令牌而导致的 400 错误的有效载荷预期具有以下类似的形式:
"error_description": "Token has been revoked.",
"error": "invalid_grant"
}
为确保您的应用能够正常工作,我们建议执行以下操作:
针对可检测撤销的令牌的 API 调用和令牌刷新操作添加错误处理代码。
在检测到撤销的令牌时,停用任何依赖于 Google API 访问的应用功能,直至用户可以为您的应用重新授权。例如,暂停任何使用可能受影响的 Google API 来同步数据的重复性后台作业。
通知用户该访问权限已被撤销,并提示用户重新授予访问其资源的权限。
如果您的应用与用户 直接 交互,则需要提示用户重新授权,即给用户发送一封电子邮件和/或在用户下次打开您的应用时向其显示一则警报。
但如果您的应用 独立于用户 运行,例如某个使用 Gmail API 的后台应用,则需要通过电子邮件或其他某种机制来通知用户。
提供优化的 UI 用于重新授予访问权限。避免用户在查找原始设置时进行大量的应用浏览操作。
请注意,无论令牌的撤销方式如何,撤销的令牌都会导致类似的错误消息。您的消息传递不应假定令牌是由于密码更改而被撤销。
如果您的应用使用增量授权在同一令牌中累积多个范围,则应跟踪给定用户已启用的功能和范围。最终,如果您的应用请求并获得了多个范围的授权,并且其中至少有一个是邮件范围,那么撤销该令牌将意味着需要提示您的用户为 最初授权的所有 范围重新授权。
许多应用使用令牌来执行后台或服务器到服务器 API 调用。用户希望此后台活动能够继续可靠地运行。由于此政策更改也会影响 这些 应用,这使得请求重新授权的提示通知变得更加重要。
简而言之,经过正确配置的应用通常应该能够处理无效的令牌,不论这些令牌已到期、不存在还是作为正常情况被撤销。我们建议开发者进行任何必要的更改,以便为其用户提供可能的最佳体验。
以上是关于通过OAuth 2.0令牌撤销提高帐户安全性的主要内容,如果未能解决你的问题,请参考以下文章