使用 CognitoUser 而不是 IAM 凭证的浏览器中适用于 JS 的 AWS SDK?
AWS SDK for JS in Browser with a CognitoUser instead of IAM credentials?
我有一个与 S3 交互的浏览器应用程序。由于它主要是一个内部工具,在处理对 API 的身份验证后,它直接接收到一个非常受限的 IAM 用户的 ID 和密码,然后用于在浏览器中设置 AWS SDK。
我现在正尝试将该应用更改为使用 Cognito 进行身份验证,以便外部用户可以访问它而不会危及我们的安全。
我最后使用 AWS Amplify 只是为了处理身份验证部分,现在我想弄清楚是否有办法使用我从 Cognito 获得的凭证来设置 AWS JavaScript SDK 和从那时起复制相同的功能。 (Amplify 目前处理与 S3 交互的方式并未涵盖应用程序的所有需求)
有办法吗?我发现 SDK 文档非常混乱,并且无法确定我正在尝试做的事情是否可以完成。
此外,如果有一种方法可以仅使用 JS SDK(不使用 Amplify)通过 Cognito 登录用户,那对我来说也是可取的,但这是次要问题。
是的,您可以使用 Amplify 轻松做到这一点,我推荐这种方法。
这是文档中使用 AWS JS SDK 中的 Route53 模块的示例,但您当然可以使用任何 AWS 模块。
通过https://aws-amplify.github.io/docs/js/authentication#working-with-aws-service-objects
import Route53 from 'aws-sdk/clients/route53';
Auth.currentCredentials()
.then(credentials => {
const route53 = new Route53({
apiVersion: '2013-04-01',
credentials: Auth.essentialCredentials(credentials)
});
// more code working with route53 object
// route53.changeResourceRecordSets();
})
我有一个与 S3 交互的浏览器应用程序。由于它主要是一个内部工具,在处理对 API 的身份验证后,它直接接收到一个非常受限的 IAM 用户的 ID 和密码,然后用于在浏览器中设置 AWS SDK。
我现在正尝试将该应用更改为使用 Cognito 进行身份验证,以便外部用户可以访问它而不会危及我们的安全。
我最后使用 AWS Amplify 只是为了处理身份验证部分,现在我想弄清楚是否有办法使用我从 Cognito 获得的凭证来设置 AWS JavaScript SDK 和从那时起复制相同的功能。 (Amplify 目前处理与 S3 交互的方式并未涵盖应用程序的所有需求)
有办法吗?我发现 SDK 文档非常混乱,并且无法确定我正在尝试做的事情是否可以完成。
此外,如果有一种方法可以仅使用 JS SDK(不使用 Amplify)通过 Cognito 登录用户,那对我来说也是可取的,但这是次要问题。
是的,您可以使用 Amplify 轻松做到这一点,我推荐这种方法。
这是文档中使用 AWS JS SDK 中的 Route53 模块的示例,但您当然可以使用任何 AWS 模块。
通过https://aws-amplify.github.io/docs/js/authentication#working-with-aws-service-objects
import Route53 from 'aws-sdk/clients/route53';
Auth.currentCredentials()
.then(credentials => {
const route53 = new Route53({
apiVersion: '2013-04-01',
credentials: Auth.essentialCredentials(credentials)
});
// more code working with route53 object
// route53.changeResourceRecordSets();
})