gpt4 book ai didi

rest - 具有服务器端身份验证和 Cognito 的无服务器框架

转载 作者:行者123 更新时间:2023-12-05 00:15:03 27 4
gpt4 key购买 nike

我已经使用无服务器框架和 APIG、DynamoDB 作为数据存储和 Cognito 实现了各种 REST-API,用于以 Angular2 作为前端的用户身份验证。服务器端的 Cognito 授权者可以轻松保护这些功能。缺点是我必须在我的前端应用程序中集成 AWS SDK,以便首先使用 Cognito 对用户进行身份验证(注册/登录,...)。我也可以使用 AWS_IAM 授权方,但随后我还必须使用 AWS specific signature 对客户端的所有请求进行签名。在将请求发送到 API 网关之前。

现在我想知道是否有可能在服务器端保留身份验证和授权,所以我可以使用像 JSON Web Tokens 这样的开放标准。注册/登录?这将允许我为其他开发人员打开我的 REST-API 不强制他们使用 Cognito 根本。

我知道一种可能性是为我的 lambda 函数实现自定义授权器,但是没有任何稳定的东西可以“开箱即用”使用吗?我发现的大多数示例都是在客户端使用 Cognito 或 IAM auth AWS 签名登录(例如 serverless-stack.com )。

奇怪的是,到目前为止我没有在网上找到任何关于此的有用信息,因为我认为这是 REST API 的典型用例。还是我对 API Gateway + Cognito 有概念上的误解?

最佳答案

我在理解 AWS Cognito 的工作方式以及实现身份验证和授权的可用选项方面遇到了同样的麻烦。不幸的是没有 开箱即用 方法可用于满足您的要求。尽管如此,我们还是希望亚马逊能尽快推出一项功能。

基本上,有 3 个选项可用于实现身份验证。

  • AWS_IAM
  • Cognito 授权方
  • 自定义授权人

  • AWS_IAM

    除了身份验证之外,此方法还可用于使用 IAM 角色或 IAM 用户轻松实现授权。唯一的缺点是你需要发送一个带有 签名的请求。 aws-signature-4 这不是我们在 Auth0 等 IDP 服务中看到的标准方式。

    认知授权者

    此方法符合使用 API 请求发送 JWT token 的期望。您可以在 Cognito 用户池中创建用户,然后使用它进行身份验证并生成 IdToken。但是,此方法只允许您对用户进行身份验证;授权需要在方法级别处理。

    自定义授权人

    此方法可用于编写您自己的身份验证和授权方式。它还有助于消除 API 方法中的编写授权逻辑。理想的解决方案是使用 AWS Cognito 用户池对用户进行身份验证,然后为 IAM 角色生成访问资源的策略文档。
    这是一个例子 AWS cognito userpools JavaScript SDK get user's policy documents .
    另请记住,此解决方案将为您发出的每个请求调用一个额外的 lambda 函数。

    关于rest - 具有服务器端身份验证和 Cognito 的无服务器框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45631460/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com