【问题标题】:Autetificate users in AWS Api Gateway with Cognito使用 Cognito 在 AWS Api Gateway 中验证用户
【发布时间】:2023-03-31 08:51:01
【问题描述】:

我想使用 Aws Rest Api Gateway 构建一个 rest api。这将是已经投入生产的 api 的新版本(托管在私有服务器上)。

在当前版本的 api 中,我们使用 oauth2 和授权类型密码进行身份验证。这意味着客户端发送他的用户名并传递到“.../access_token”端点,从那里获取他的令牌。有了这个令牌,他就可以调用其他端点。

在新的 api 版本中,我使用的是 AWS Api Gateway with Authorizer。我想根据用户名和密码字段提供对资源的访问权限

我创建了一个用户池并在那里添加了我的用户。如何仅使用 api 端点进行身份验证?
我不能使用 Oauth“客户端凭据”流程,因为必须公开机器对机器和客户端密码。

在授权代码或隐式授权上,我必须要求用户登录 AWS/自定义 ui 并获得重定向。所以我不能在 Api 中使用这些。

我错过了什么?

【问题讨论】:

    标签: amazon-web-services aws-api-gateway amazon-cognito


    【解决方案1】:

    我了解您需要在不使用浏览器的情况下对您的用户进行身份验证。一个想法是创建一个登录端点,用户将在其中提供他们的用户名和密码并取回令牌。您应该自己实现此端点。来自这个question:

    aws cognito-idp admin-initiate-auth --region {your-aws-region} --cli-input-json file://auth.json
    

    auth.json 在哪里:

    {
        "UserPoolId": "{your-user-pool-id}",
        "ClientId": "{your-client-id}",
        "AuthFlow": "ADMIN_NO_SRP_AUTH",
        "AuthParameters": {
            "USERNAME": "admin@example.com",
            "PASSWORD": "password123"
        }
    }
    

    这将为您的用户提供访问权、ID 和刷新令牌(与授权授予类型相同)。他们应该能够使用访问令牌来访问资源并使用刷新令牌针对Token endpoint 来更新访问令牌。

    这不是对 API 进行身份验证的常用方法,并且可能会产生一些安全隐患。

    【讨论】:

      猜你喜欢
      • 2015-12-04
      • 2016-08-20
      • 2017-05-29
      • 2019-12-31
      • 2020-01-05
      • 2022-01-15
      • 2021-09-05
      • 1970-01-01
      • 2020-12-23
      相关资源
      最近更新 更多