【问题标题】:AWS: How to check that credentials are correct?卓:如何检查凭证是否正确?
【发布时间】:2018-12-14 01:04:24
【问题描述】:

以下函数(在 Javascript 中)应该接受 accessKey 和 secretKey 并检查它们是否正确:

function checkKeys(accessKey, secretKey) {
    var cred = new AWS.Credentials(accessKey, secretKey, null);
    cred.get(function(err) {
        if (err) {
            console.log("ERROR!")
        } else {
            console.log("Keys are OK")
        }
    })
}

我希望 get() 方法在凭据不正确的情况下返回错误。我不知道为什么,但是我提供什么凭据并不重要,我从来没有收到错误,并且控制台总是打印“Keys are OK”。

【问题讨论】:

标签: amazon-web-services amazon-s3 aws-sdk


【解决方案1】:

您无法真正检查凭据是否“正确”。考虑用户角色。用户可能被授权进行一次 API 调用,但不能进行另一次调用。您可以做的唯一通用的事情是确保您拥有的 ID+密钥对是有效的 AWS 凭证,带有STS.getCallerIdentity()(有关详细信息,请参阅SDK docs)。请注意,即使此调用者无法访问任何服务,它也会返回调用者详细信息,因此请谨慎对待结果。

【讨论】:

    【解决方案2】:

    您只是将凭据存储在本地对象中,然后检索它们。您需要触发实际的 AWS API 调用以验证凭证是否有效。

    【讨论】:

    • 所以检查它的唯一方法实际上是尝试进行查询。对吗?
    • 不确定您所说的“查询”是什么意思。检查的唯一方法是使用 SDK 实际执行 something 导致它访问 AWS API。您出于某种原因使用 S3 标记了问题,因此可能会调用 S3 来检查对象是否存在。
    猜你喜欢
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 2013-06-11
    • 2023-03-17
    • 2017-10-04
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多