我不清楚在初步验证后我应该如何处理 Google 的 id 令牌。
我正在 expo/react Native 上进行开发并在本地获取 id 令牌。然后,我将其发送到我的服务器并使用谷歌客户端库验证它。验证后我该怎么办?
理想情况下,我可以使用它来保护我的 api 路由(express),但 id 令牌会在 1 小时后过期,并且我不知道如何使用客户端库刷新它们。所以,我不知道该怎么做。
这是 id 令牌的预期用途吗?我应该签署自己的 jwt 并将其发送回客户端吗?然后,客户端可以将每个请求的 auth 标头中的内容发送到受保护的路由。
谷歌说:
验证令牌后,检查该用户是否已在您的用户数据库中。如果是,请为用户建立经过身份验证的会话。如果用户尚未位于您的用户数据库中,请根据 ID 令牌负载中的信息创建新的用户记录,并为该用户建立会话。当您在应用程序中检测到新创建的用户时,您可以提示用户提供所需的任何其他个人资料信息。
https://developers.google.com/identity/sign-in/ios/backend-auth
我是否使用 id 令牌“为用户建立会话”?
是的,ID 令牌仅用于创建本地会话,如果使用的话,也许还可以在本地数据库中创建本地条目。
ID 令牌的生命周期也很短,在某些系统中为 5 分钟。所以不宜长期使用。
ID 令牌用于验证用户身份。它为您提供有关经过身份验证的用户的信息,不应将其用于允许访问您的端点。访问令牌或会话旨在实现此目的。因此,在您的情况下,您应该完全按照您的直觉去做 - 根据您在 ID 令牌中获得的数据为用户创建一个会话。
如果您有自己的授权服务器,您可以使用 ID 令牌颁发访问令牌并将令牌返回到前端应用程序,然后使用 访问令牌 访问您的后端。如果您想这样做,请查看 OAuth 流程。