oauth-2.0 - 如何使用 Google Auth JWT 授权登录用户? (图片)

标签 oauth-2.0 oauth jwt google-oauth google-authentication

我目前有一个在 AWS Lambda 上运行的后端,并且使用 DynamoDB 作为数据库。在 Dynamo 中,有一个用户列表,每个用户对于他们可以通过 API 访问哪些路由都有特定的权限。这里没有问题。 我尚未构建前端,但我将使用 Google Auth 登录用户,更具体地说 with the react-google-login component .

我的问题是:用户登录网站后,我是否应该信任来自 Google 的 JWT(在验证其合法性后) here with the Google API )返回用户信息(姓名、电子邮件),在 Dynamo 内查找用户项以检索他们的权限,然后满足他们的请求? 这似乎是合乎逻辑的事情,但我正在寻找一些确认。我担心的是,有人可以使用主管姓名和电子邮件来授权请求​​,但如果 lambda 必须接受 Google 创建的 JWT 作为条目,我相信这个问题已经解决了吗?

我还为每个用户提供了用于某些外部功能的 API key ,但我已经涵盖了这一点,因为这只是 Dynamo 调用即可。我唯一关心的是前端对 Lambda 的请求,因为我不想推出自己的 auth/jwt。

Here is what I was envisioning. 谢谢!

最佳答案

通常您应该为此目的使用访问 token 。 ID token 应仅用于验证用户身份,而访问 token 应用于授权访问。

最好的方案是拥有一个可以颁发访问 token 的单独的授权服务器,并且您可以使用一些开源解决方案。

如果您确实不想设置自己的 AS,那么您可以按照您概述的方案进行操作 - 从 Google 验证 JWT 并检查 DynamoDB 中的权限的部分是授权服务器通常会执行的操作来颁发访问 token .

只需记住彻底验证传入的 JWT - 不仅是 Google 的签名,还要检查这是否是为您的客户/受众等创建的 token 。否则,有人可能会从其客户那里获取 Google ID token JWT 并获得访问您的 API。 This article列出了使用 JWT 时的最佳安全实践。

另请记住,ID token 的过期时间可能很短,并且无法自动刷新它们(就像您可以在访问 token 的情况下使用刷新 token 来执行此操作),因此您最终可能需要经常重新进行身份验证.

关于oauth-2.0 - 如何使用 Google Auth JWT 授权登录用户? (图片),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66465931/

相关文章:

json - 无法解码 token : The token ###

oauth-2.0 - 在 OpenID 连接授权代码流中使用 PKCE 时我们需要 client_secret 吗?

Django OAuth 工具包 : could not import ext. rest_framework

c# - OWIN 不记名 token 认证

c# - 从 JWT token 获取声明、权限和角色

security - 将 jwt token 作为 url 的一部分传递是否不好?

curl - 无法获取访问 token -Uber API

c# - google api oauth 访问 token 检索 - 400 错误请求

Android:OAuth2 - 如何实现记住我的功能?

api - Google品牌帐户控制台/获取YouTube品牌帐户的OAuth 2.0客户端 secret ?