当前位置: 首页 > 知识库问答 >
问题:

使用存储在DynamoDB中的用户进行AWS Gateway API身份验证

戎高爽
2023-03-14

我正在尝试实施以下方案:

前端使用Angular SPA,后端使用网关API lambda函数

由于我的应用需要身份验证,因此将有 /auth endpoint检查用户凭据(用户存储在 DynamoDB 中)并在成功的情况下返回身份验证令牌 (JWT)。客户端必须将身份验证令牌与每个请求一起发送到后端,我的 lambda 函数必须验证这些令牌。

这个方案看起来不错,但我想知道是否可以以某种方式更改它,以便将检查令牌的责任从lambda函数中移出(上图中的lambdaAction)?

我看过使用第三方服务的教程,比如Auth0,认证发生在Gateway API中,在任何lambda函数之前(例如参见链接),但我不知道如何将这些服务用于存储在我自己的DB中的用户。

因此,简而言之,我的问题是:有没有可能对存储在我的数据库中的用户使用网关API和基于令牌的认证

共有2个答案

柴浩大
2023-03-14

除了马克B的回答。

我编写了一个通用的自定义授权器,它与Auth0一起使用,这是第三方单点登录服务。

作为身份验证的一部分,它将选择性地将身份验证 0 用户数据存储到 DynamoDB。

图书馆可以在这里找到https://github.com/jghaines/lambda-auth0-authorizer

艾骏
2023-03-14

Auth0示例仍然使用Lambda函数来验证每个请求的JWT。API网关不会自动验证JSON Web令牌,您必须提供Lambda函数才能做到这一点。

我会考虑使用新的API网关定制授权功能。这样,您可以拥有一个负责验证每个请求的JWT的Lambda函数。这使得你的认证代码封装在一个函数中,而不是在每个Lambda函数中重复。它还允许您在实际的APIendpoint可能指向Lambda以外的东西时用Lambda进行身份验证。

 类似资料:
  • 这是服务到服务身份验证中概述的规则的一个例外吗?该规则规定需要设置为接收服务的url(例如https://xxxxx.run.app)。和是一回事吗? 最后,除了使用googlecloudsdk(即imaging不存在)之外,是否还有其他方法使用用户帐户而不是服务帐户进行身份验证?

  • 我是身份验证方面的新手。我有一个应用程序,登录后,向服务器发送凭据,服务器生成令牌并将其发送回客户端(移动设备)。 这是我的问题:在可用后,我应该在哪里存储即将到来的请求的信息?例如,如果我想发送请求,我有两种方法: < li >在请求的< code>body上存储所需的信息 < li >使用< code>Base64中的< code>JSON格式对信息进行编码后,将其存储在< code>JWT的

  • 我已经实现了keycloak用户存储SPI流。它针对外部源进行身份验证。Keycloak是用外部存储属性更新的,如果它在getUserByUsername方法中更新,它就可以工作。 我正在isValid方法中验证userValidation,并更新UserModel和LocalHashMap中的userAttributes。 从日志中,我看到UserStoreProviderFactory创建了两

  • 问题内容: 在我的iOS应用程序中,我想使用WKWebView在应用程序中包装外部URL 。此URL需要基本身份验证(它需要用户和密码凭据,如以下屏幕截图所示)。 经过一番调查,我尝试使用 didReceiveAuthenticationChallengemethod来启用自动 登录,因此我不了解它的工作原理。 这是我的代码。 I’m facing with this exception: If

  • 我正在尝试使用urllib3连接到网页。代码如下所示。 如果我们假设url是需要使用用户名和密码进行身份验证的某个网页,那么我是否使用正确的代码进行身份验证? 我使用urllib2做这件事很舒服,但使用urllib3做不到同样的事情。 非常感谢

  • jwt不应该仅仅用于认证用户吗?我读到过可以在里面存储非敏感的东西,比如用户ID。将权限级别之类的东西存储在令牌中可以吗?这样我可以避免数据库调用。