问题描述
我不清楚在初始验证后我应该如何处理来自 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-token 仅用于创建本地会话,如果使用,可能还会在本地数据库中创建一个本地条目。
ID 令牌的生命周期也很短,例如在某些系统中为 5 分钟。所以它没有长期使用。
,ID 令牌旨在对用户进行身份验证。它为您提供有关经过身份验证的用户的信息,不应使用它来允许访问您的端点。访问令牌或会话旨在这样做。因此,在您的情况下,您应该完全按照直觉告诉您 - 根据您在 ID 令牌中获得的数据为用户创建一个会话。
如果您有自己的授权服务器,您可以使用 ID 令牌颁发访问令牌并将令牌返回给前端应用,然后使用访问令牌访问您的后端。如果您想采用这种方式,请查看 OAuth 流程。