我正在为应用程序开发一个安全模块,使用google的oauth 2.0访问令牌,使用本文“获取OAuth 2.0访问令牌”部分中的建议:https://developers.google.com/identity/protocols/OAuth2WebServer
我正在存储上面文章中步骤5中收到的access_token,“步骤5:用于刷新和访问令牌的Exchange授权代码”。
让我们说,用户在浏览器中访问任何谷歌网络应用程序并注销,我知道谷歌的会话在那时是无效的,那就是为我生成的access_token生成的会话,然后,让我们说,在那一刻,用户登录了我的应用程序,我的应用程序的会话已过期,所以问题是,如果我的应用程序的会话过期而用户转到我的应用程序,我的应用程序将尝试验证访问令牌(我想维护只要谷歌会话还活着,我的应用程序会话就会与谷歌会话保持一致但是这项服务https://www.googleapis.com/oauth2/v2/tokeninfo并没有中间反映出我的应用程序中的access_token无效,需要花费很多时间来反映用户已注销,访问令牌无效。
请原谅我的长篇解释,我希望很清楚。
现在我的问题是,google rest / service为access_token提供了更好的验证?
答案 0 :(得分:0)
我认为您错误地假设访问令牌(和刷新令牌)绑定到验证用户身份时使用的会话。我试图找到一些关于它的信息,但没有成功。可能有多个会话 - 例如在不同的浏览器中。如果您在一个浏览器中注销,另一个浏览器仍然保持登录状态,因此可能没有“全局注销”可以终止用户的所有会话。
如果令牌在浏览器会话注销时失效,则会使使用令牌的应用程序变得脆弱。例如,仅使用浏览器进行身份验证的移动或桌面应用程序,并且在成功进行身份验证后不用于保持浏览器窗口打开,因此无法使浏览器会话保持活动状态。他们的令牌会在会话到期时失效。
Google似乎无法在OpenID Connect session management中提供discovery document功能,因此您无法使用iframe监控会话(如the RFC中所述)。