【问题标题】:How do you get IAM credentials using Amplify Auth?如何使用 Amplify Auth 获取 IAM 凭证?
【发布时间】:2022-12-21 02:30:22
【问题描述】:

我正在尝试使用 Amplify ^5.0.7 获取 IAM 凭证。我能够成功登录并获取 OpenID 令牌:

Auth.signIn({
    username: user,
    password: password
})
.then((u: CognitoUser) => {
    console.log("User", u);
    console.log("Credentials", Auth.Credentials);
    console.log("Essential credentials", Auth.essentialCredentials(Auth.Credentials));
    return Auth.currentSession();
}).then((data: CognitoUserSession) => {
     console.log("Current session", data);
     return Auth.essentialCredentials(Auth.currentCredentials())
}).then((c: ICredentials) => {
    console.log("Credentials", c);
})

成功登录,并获取具有 ID、访问和刷新令牌的当前会话。问题是没有凭证。 currentCredentials() 返回一个 ICredentials 对象,但它的字段都是未定义的。我认为那些应该映射到临时 IAM 凭证。

我正在测试的用户恰好属于一个组,并且该组分配有一个 IAM 角色。

我是否缺少请求临时 IAM 凭证的步骤?我没有在后端使用放大。我真的在使用 Amplify Auth,因为它为我处理 SRP。

【问题讨论】:

    标签: aws-amplify


    【解决方案1】:

    我想我明白了,而且比我想象的要简单。我想发布我为修复它所做的工作,以防其他人遇到同样的问题。

    我所做的基本上是正确的,除了你不需要先获得会话。

    Auth.signIn({
        username: userInput,
        password: passwordInput
    })
    .then((u: CognitoUser) => {
        console.log("Auth.credentials", Auth.Credentials)
        return Auth.currentCredentials()
    }).then((currentCredentials: ICredentials) => {
        console.log("Essential credentials", Auth.essentialCredentials(currentCredentials))
    })
    

    并没有真正的“代码”技巧来让它工作。真正的问题是我对如何设置 Cognito 不够谨慎。为此,您需要一个用户池和一个身份池。身份池指向用户池。我已经这样做了,但我没有正确设置 Amplify。工作的方式是:

    Amplify.configure({
         Auth: {
            mandatorySignIn: true,
            region: 'us-east-1',
            userPoolId: 'us-east-1_CX1xxxxxx',
            userPoolWebClientId: '5eo394ojo1gvdm6cbxxxxxxxxxs',
            identityPoolId: 'us-east-1:f69259b2-ff84-4731-b80c-xf421-xxxx'
        }
    });
    

    如果您不关心 IAM 凭证,您似乎不需要身份池,也不需要指定其 ID。如果您将它们排除在外,您只会得到一个空的 Credentials。

    所以 Amplify 会做所有事情。我是 Amplify 的新手,与直接处理 SRP 相比,工作量要少得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多