作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试集成 AWS cognito 用户池,但我觉得它不再安全了。因为在登录中收到的 id token 包含用户池 id。使用该用户池 ID,任何人都可以访问用户详细信息列表。
示例 - 下面显示了我的 id_token 数据,我可以在 iss 字段中清楚地看到我的用户池 ID (us-east-1_i1SXXXXX)
因此,使用该用户池 ID,我可以检索列表用户,然后编辑任何用户详细信息。
检索用户详细信息 -
var AWS = require('aws-sdk');
var AWSCognito = require('amazon-cognito-identity-js');
var util = require('util');
var params = {
Username: '',
Password: '',
UserPoolId: 'us-east-1_i1SGXXXXX', // just paste id token user pool
ClientId: 'ZZZZZZZZZZ', // just random string
AWSRegion: 'us-east-1' //region
}
AWS.config.update({region: params.AWSRegion});
var poolData = {
UserPoolId : params.UserPoolId,
ClientId : params.ClientId
};
var userPool = new AWSCognito.CognitoUserPool(poolData);
var userData = {
Username : params.Username,
Pool : userPool
};
var cognitoUser = new AWSCognito.CognitoUser(userData);
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
cognitoidentityserviceprovider.listUsers({UserPoolId: params.UserPoolId}, function(err, data) {
if (err) {
console.log(err, err.stack);
} else {
console.log(data.Users);
}
});
最后您可以编辑用户详细信息 -
var AWS = require('aws-sdk');
var AWSCognito = require('amazon-cognito-identity-js');
var util = require('util');
global.navigator = () => null;
var params = {
Username: '',
Password: '',
UserPoolId: 'us-east-1_i1SGXXXXX',
ClientId: '',
IdentityPoolId: '',
AWSRegion: 'us-east-1'
}
AWS.config.update({
region: params.AWSRegion
});
var authenticationData = {
Username: params.Username,
Password: params.Password
};
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
var params = {
UserAttributes: [{
Name: 'address',
Value: 'address updated'
}
],
UserPoolId: params.UserPoolId,
/* required */
Username: 'XXXXXXX' //add any user id where you retrieve from list of user code
};
cognitoidentityserviceprovider.adminUpdateUserAttributes(params, function (err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
那么你的建议是什么。我在创建 idToken 时做错了什么吗?
最佳答案
如果您有 userpool
的 id
,您不能就用户详细信息“询问”Cognito,因为:
用户池的访问权限由 AWS 的 IAM 管理(由您/管理员提供),因此您可能没有身份验证通过 IAM 强制执行用户池?!我非常怀疑。
显然,如果我的 web 编写的 web 应用程序可以访问用户池,那么我可以要求它做什么想要处理用户池。
此外,您的应用在用户群中的设置是什么?
关于javascript - AWS Cognito 如何安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48718381/
我是一名优秀的程序员,十分优秀!