【问题标题】:How do you use AWS Cognito with a custom NodeJS server?您如何将 AWS Cognito 与自定义 NodeJS 服务器一起使用?
【发布时间】:2018-06-02 06:23:10
【问题描述】:

我正在使用 Angular 和 NodeJS 构建一个应用程序。

我听说过 AWS Cognito,并希望在我的应用程序中使用它。但是,文档中并不清楚它应该如何工作。

There is an example 关于如何将 Cognito 与 Angular SPA 一起使用,但没有关于如何使用它在我的后端 NodeJS 服务器上对用户进行身份验证的消息。

NodeJS 应该如何知道用户是否登录?我可以想到几个可能的答案,但没有出现在文档中,而且令人惊讶的是没有代码示例。所以我决定在投入大量时间试错之前先在这里问一下。

【问题讨论】:

    标签: node.js angular amazon-web-services aws-cognito


    【解决方案1】:

    您可以在后端 NodeJS 服务器中使用 AWS Cognito 用户池对用户进行身份验证。步骤如下。

    • 创建 Cognito 用户池并设置应用客户端。
    • 创建一个 Cognito 用户池(如果您希望您的用户直接允许受控访问 AWS 服务,则可以选择 Cognito 联合身份)。
    • 配置 Cognito 托管 UI(内置登录页面和可选的注册页面)。
    • 对于用户登录,将用户重定向到此域 URL 以进行登录。
    • 设置应用程序客户端,将 URL 重定向到您的应用程序以进行 Oauth2 流。
    • 用户登录后,您将在 URL 中收到一个 id_token(例如在隐式授权流中),您可以将其转发到您的 NodeJS 服务器,在那里您可以使用 NodeJS 中间件对其进行验证。
    • 您可以决定是将 id_token 存储在 cookie 中还是浏览器存储中,并为后续请求实现相应的存储和验证。

    注意:由于 id_token 是标准的 JavaScript Web Token (JWT),您可以找到一个库来验证它。详情请参考AWS documentation Using Tokens with User Pools

    【讨论】:

    • 谢谢!但是,如果您希望您的用户直接允许受控访问 AWS 服务,您的意思是什么?
    • 例如,假设您希望允许您的用户直接将文件上传到 s3。用户需要临时访问凭证,该凭证可以发给用户,用户可以直接从浏览器上传。
    • 您需要 Cognito 联合身份(如果您在池中注册用户,则与用户池连接)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 2019-08-07
    • 2019-11-28
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多