如何将 AWS Cognito 与自定义 NodeJS 服务器结合使用?
How do you use AWS Cognito with a custom NodeJS server?
我正在使用 Angular 和 NodeJS 构建应用程序。
我听说过 AWS Cognito 并想在我的应用程序中使用它。然而,文档中并不清楚它应该如何工作。
There is an example 关于如何将 Cognito 与 Angular SPA 一起使用,但没有关于如何使用它在我的支持 NodeJS 服务器上对用户进行身份验证的消息。
NodeJS 应该如何知道用户是否已登录?我可以想到几个可能的答案,但是 none 出现在文档中,而且令人惊讶的是没有代码示例。所以我决定在投入大量时间试错之前在这里问一下。
您可以在后端 NodeJS 服务器中使用 AWS Cognito 用户池来对用户进行身份验证。步骤如下
- 创建 Cognito 用户池并设置 App 客户端。
- 创建一个 Cognito 用户池(如果您希望您的用户直接允许受控访问 AWS 服务,则可以选择 Cognito 联合身份)。
- 配置托管的 Cognito UI(内置登录页面和可选的注册页面)。
- 对于用户登录,将用户重定向到此域 URL 以进行登录。
- 设置应用程序客户端,重定向 URL 到您的应用程序以实现 Oauth2 流程。
- 用户登录后,您将在 URL 中收到一个 id_token(例如,在隐式授权流程中),您可以将其转发到您的 NodeJS 服务器,您可以在其中使用 NodeJS 中间件对其进行验证。
- 您可以决定是将 id_token 存储在 cookie 中还是浏览器存储中,并为后续请求执行相应的存储和验证。
注意:由于 id_token 是标准的 JavaScript Web 令牌 (JWT),您可以找到一个库来验证它。请参阅 AWS documentation Using Tokens with User Pools 了解更多详情。
我正在使用 Angular 和 NodeJS 构建应用程序。
我听说过 AWS Cognito 并想在我的应用程序中使用它。然而,文档中并不清楚它应该如何工作。
There is an example 关于如何将 Cognito 与 Angular SPA 一起使用,但没有关于如何使用它在我的支持 NodeJS 服务器上对用户进行身份验证的消息。
NodeJS 应该如何知道用户是否已登录?我可以想到几个可能的答案,但是 none 出现在文档中,而且令人惊讶的是没有代码示例。所以我决定在投入大量时间试错之前在这里问一下。
您可以在后端 NodeJS 服务器中使用 AWS Cognito 用户池来对用户进行身份验证。步骤如下
- 创建 Cognito 用户池并设置 App 客户端。
- 创建一个 Cognito 用户池(如果您希望您的用户直接允许受控访问 AWS 服务,则可以选择 Cognito 联合身份)。
- 配置托管的 Cognito UI(内置登录页面和可选的注册页面)。
- 对于用户登录,将用户重定向到此域 URL 以进行登录。
- 设置应用程序客户端,重定向 URL 到您的应用程序以实现 Oauth2 流程。
- 用户登录后,您将在 URL 中收到一个 id_token(例如,在隐式授权流程中),您可以将其转发到您的 NodeJS 服务器,您可以在其中使用 NodeJS 中间件对其进行验证。
- 您可以决定是将 id_token 存储在 cookie 中还是浏览器存储中,并为后续请求执行相应的存储和验证。
注意:由于 id_token 是标准的 JavaScript Web 令牌 (JWT),您可以找到一个库来验证它。请参阅 AWS documentation Using Tokens with User Pools 了解更多详情。