我正在开发一个Java Web应用程序,我对OAuth 2.0授权代码流有一个问题,如here所述:
此流程是使用GoogleAuthorizationCodeFlow实现的。步骤 是:
- 最终用户登录您的应用程序。你需要联系 具有用户ID的用户,该用户ID对于您的应用程序是唯一的。
- 根据用户ID调用AuthorizationCodeFlow.loadCredential(String) 检查最终用户的凭据是否已知。如果是这样,我们就是 完成。
- 如果没有,请调用AuthorizationCodeFlow.newAuthorizationUrl()和 将最终用户的浏览器指向授权页面以授予您的权限 应用程序访问受保护的数据。
- Google授权 然后,服务器将浏览器重定向回重定向URL 由您的应用程序指定,以及代码查询参数。使用 用于请求访问令牌的代码参数 AuthorizationCodeFlow.newTokenRequest(字符串)。
- 使用AuthorizationCodeFlow.createAndStoreCredential(TokenResponse,String) 存储和获取用于访问受保护资源的凭证。
关于最后两个步骤,我的问题是:
当授权服务器将浏览器重定向回重定向网址时,如何知道哪个用户授权访问?我得到的只是一个代码查询参数,其中包含授权代码。
可以使用state参数吗?我已经读过它应该用于防止跨站点请求伪造,这是另一个目的。是否可以使用state参数来获得关系?
是的,我已阅读this post但我不知道会话解决方案是否适用于我的场景,因为我只有休息服务。