使用 google 登录的编程流程

Programming Flow with Signin with google

我正在尝试编写一个使用 登录 google 的网络应用程序。我对应该遵循的步骤顺序有点困惑。根据 google 文档,登录用户的正常流程是:

我想弄明白的是:

1.) 我是否应该将 IdToken 与每个后续的 API 请求一起从网络发送到我的服务器。

2.) 如果有人窃取此访问令牌并用它向我的服务器发送调用怎么办?

Google 的 official publications:

中提供了草图的重要信息

  1. 发行者 (Google) 生成并签署易失性令牌,通常 在相当短的生命周期后过期(相关 post,而不是 google-login-specific:What is intent of ID Token expiry time in OpenID Connect?). The Google docs 描述了如何通过 https 将令牌 XYZ123 发送到 https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123

    正如@ian-barber 所写here:“请务必始终通过 HTTPS 发送 ID 令牌 - 虽然它们本身不能被恶意使用,但攻击者可以使用它们与自己建立会话您的应用程序服务器是否可以拦截它,因此重要的是它们不会以纯文本形式发送。"

    (刷新)令牌将用于对用户进行身份验证。然后你的后端逻辑(蓝色服务器部分)可以授予进一步的权限或者例如在 post 响应中传输数据。 The API(JavaScript版本)提供了一个工具集来监控用户的会话状态。

  2. here 所述,您必须指定“授权来源”。仅授权 origins 可以通过 Google 身份验证其客户端用户 API。请注意,即使是港口 事项,即如果您允许 localhost:8080 作为授权来源, 那么 localhost:9999 不包括在内!此外,客户端 ID 本身并不是秘密,自然会暴露在您的 html 文档或应用程序中。但只有授权来源才有资格遍历登录工作流程并将令牌传输到后端,在后端通过调用 API.

    对其进行验证