gpt4 book ai didi

javascript - 如何以管理员身份通过 Cognito SDK 更新用户属性

转载 作者:行者123 更新时间:2023-11-30 06:11:49 27 4
gpt4 key购买 nike

我正在创建一个 Angular 应用程序,我想在其中通过 AWS Cognito 添加身份验证(我是 AWS 的新手)。我成功地添加了注册、登录、注销、mfa 等功能。此外,我想创建类似管理面板的东西,管理员可以在其中更改一般用户的属性。但我不确定如何实现这些管理事项。管理员应如何登录?管理员应该如何注册?是否有专门的用户池?那么如何以admin的身份对普通用户进行管理(修改属性)呢?

我看过 AWS 文档,但还不够清楚。我看到有一些以 Admin 为前缀的操作,例如 AdminUpdateUserAttributes,但我不确定如何使用它们。

编辑:我试过这样的事情:

const AWS = require('aws-sdk');
let cognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});

let params = {
UserAttributes: [{
Name: 'custom:state',
Value: this.newValue
}],
UserPoolId: 'us-east-1_example',
Username: this.username
};
cognitoIdentityServiceProvider.adminUpdateUserAttributes(params, function(err, data) {
// do something with result
err && console.error(err);
data && console.log(data);
});

但我收到以下错误:CredentialsError: Missing credentials in config

我应该如何设置这些凭据?

最佳答案

为了拥有admin 权限,您需要提供accessKeyIdsecretAccessKeyidToken。一种方法是从 AWS 管理控制台获取这些 key 。它们可以从 IAM Angular 色中提取,该 Angular 色有权修改所需的用户池。然后你可以这样做:

AWS.config.update({accessKeyId: '...', secretAccessKey: '...'});

我个人在我的应用程序中所做的是为管理员创建另一个用户池。然后我将这个用户池作为身份提供者添加到身份池中。然后我编辑了授权 IAM Angular 色,以便能够与普通用户一起编辑用户池。

以下对我有用:

const userPool = new CognitoUserPool({
UserPoolId: this.adminUserPoolId,
ClientId: this.adminClientId
});

const authenticationDetails = new AuthenticationDetails({
Username: username,
Password: password
});
const cognitoUser = new CognitoUser({
Username: username,
Pool: userPool
});
cognitoUser.authenticateUser(authenticationDetails, ....);

const jwt = cognitoUser.getSignInSession().getIdToken().getJwtToken();
const provider = `cognito-idp.${this.region}.amazonaws.com/${this.adminUserPoolId}`;

AWS.config.update({
credentials: new CognitoIdentityCredentials({
IdentityPoolId: this.identityPoolId,
Logins: {
[provider]: jwt // when you provide the jwt, accessKeyId and secretAccessKey are extracted
}
})
});

const identityService = new CognitoIdentityServiceProvider();
identityService.adminUpdateUserAttributes(...);

关于javascript - 如何以管理员身份通过 Cognito SDK 更新用户属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58462732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com