我正在创建一个 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 权限,您需要提供accessKeyId
和secretAccessKey
或idToken
。
一种方法是从 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/