【问题标题】:Boto3 - Authenticating with Amazon Cognito without using access keysBoto3 - 在不使用访问密钥的情况下使用 Amazon Cognito 进行身份验证
【发布时间】:2018-03-31 21:08:42
【问题描述】:

我正在开发一个 python 脚本,它与使用 Amazon Cognito(我不熟悉)作为身份验证后端的 Web 服务交互,但我在登录时遇到了困难。

我的主要问题是 boto3 需要 AWS 访问密钥和秘密密钥(不提供那些我得到“NoCredentialsError”),但由于这个脚本将驻留在多台不受信任的计算机上,我不想存储/嵌入那些密钥,出于明显的安全原因。

这些不受信任的计算机可以访问的信息是:

  • 登录网络服务的用户名和密码
  • Cognito 身份池 ID
  • Cognito 用户池 ID
  • Cognito 客户端 ID

根据这些客户端所拥有的信息,是否可以通过 Cognito 正确进行身份验证?如果有,怎么做?

【问题讨论】:

    标签: python amazon-web-services authentication boto3 amazon-cognito


    【解决方案1】:

    是的。致电get_credentials_for_identity()。它不需要任何凭据。如下使用:

    import boto3
    cognito = boto3.client('cognito-identity')
    response = cognito.get_credentials_for_identity(IdentityId="id")
    

    其中"id" 是 Cognito 身份池 ID。 response 应该返回一个 dict,包括临时访问密钥、秘密访问密钥、会话令牌和到期日期。

    【讨论】:

    • 只是补充一点。您尝试调用的用户池操作未经身份验证,这意味着它们不需要凭据。但是,一些生成的客户端有一个特点,即您需要使用占位符填充凭证对象。您显然可以为此使用未经身份验证的身份凭证。
    • "id" 不是 Cognito 身份池 ID。它得到了 GetId 的响应。更多细节在这里:stackoverflow.com/a/62789387/109102
    猜你喜欢
    • 2019-06-29
    • 2020-08-15
    • 2016-08-04
    • 2018-11-20
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2017-01-13
    • 2018-03-14
    相关资源
    最近更新 更多