Google api 信任Google API响应对象和所有权

Google api 信任Google API响应对象和所有权,google-api,google-oauth,Google Api,Google Oauth,我已经成功地在我的web应用程序中实现了Google登录,使用。对于大多数需求,我只需要让用户登录我的应用程序一次,然后我将id_令牌传递回我的服务器进行身份验证,并在成功后将JWT令牌返回前端。用户不必每次访问页面时都通过将JWT令牌存储在浏览器中来登录 现在,我想在我的应用程序中构建一些额外的功能,这些功能要求我代表用户行事,因此我必须这样做。我想我在这方面有把握 在客户端,我代表用户获得使用谷歌API的许可,然后使用我得到的承载令牌向该API发出请求,然后从谷歌获得一个对象 现在,我想将该

我已经成功地在我的web应用程序中实现了Google登录,使用。对于大多数需求,我只需要让用户登录我的应用程序一次,然后我将id_令牌传递回我的服务器进行身份验证,并在成功后将JWT令牌返回前端。用户不必每次访问页面时都通过将JWT令牌存储在浏览器中来登录

现在,我想在我的应用程序中构建一些额外的功能,这些功能要求我代表用户行事,因此我必须这样做。我想我在这方面有把握

在客户端,我代表用户获得使用谷歌API的许可,然后使用我得到的承载令牌向该API发出请求,然后从谷歌获得一个对象

现在,我想将该对象传送到我的服务器(我的后端),以便在数据库中存储与登录到我的系统的用户相关的一些信息。如何在我的服务器上验证我通过浏览器通过代理从Google取回的对象是否确实属于将其传送到我的服务器的用户

如何阻止某人使用cURL和他们有效的JWT令牌到我的服务器,并传送他们自己创建的任意构造的Google对象。我在Google response对象中看不到任何可以在我的服务器上验证其真实性的东西(就像我可以使用从他们成功登录中获得的id_令牌一样,如上所述)。也许在这个对象上有一个“子”字段(我认为这是谷歌的身份概念),它至少让我知道它属于谷歌用户,如果我能首先相信这个对象的真实性的话


有没有人能给我一个合理直观的思维模型来组织我的想法,告诉我我的关注点是否偏离了基准,或者我是从一个完全错误的角度来处理这个问题的?

当你创建传递给用户的JWT时,请使用一个公共-私有密钥对来签名。这称为JWS,这是JWT的正常用例。现在你的JWT不容易伪造。您还可以在JWT中包含用户信息。当您收到来自用户的JWT时,请验证JWT签名。一旦验证,您就可以信任JWT中存储的内容。@JohnHanley这真的解决了发布的Google对象的真实性问题吗?我知道我可以验证我的系统的合法用户发出的请求,因为正如您所建议的,标题中包含JWT,但是我如何知道发布的对象实际上来自Google?您可以通过调用此端点(curl示例)来验证Google OAuth令牌:`curl“如果您实际使用的是Google JWT,那么您可以验证签名。谷歌发布了公钥对。如果您创建一个新问题,我有Python代码,它显示了如何验证Google JWT签名。