104 lines
2.8 KiB
JavaScript
104 lines
2.8 KiB
JavaScript
const http = require('http');
|
||
|
||
// 测试不同的凭据组合
|
||
const credentialsList = [
|
||
{
|
||
name: 'Docker环境变量凭据 (nice1234)',
|
||
accessKey: 'nice1234',
|
||
secretKey: 'nice1234',
|
||
},
|
||
{
|
||
name: 'MinIO默认凭据',
|
||
accessKey: 'minioadmin',
|
||
secretKey: 'minioadmin',
|
||
},
|
||
{
|
||
name: '你创建的新AccessKey',
|
||
accessKey: '7Nt7OyHkwIoo3zvSKdnc',
|
||
secretKey: 'EZ0cyrjJAsabTLNSqWcU47LURMppBW2kka3LuXzb',
|
||
},
|
||
];
|
||
|
||
async function testCredentials(accessKey, secretKey) {
|
||
const options = {
|
||
hostname: 'localhost',
|
||
port: 9000,
|
||
path: '/?list-type=2', // 列出objects
|
||
method: 'GET',
|
||
headers: {
|
||
Host: 'localhost:9000',
|
||
Authorization: `AWS ${accessKey}:fakesignature`, // 简化测试
|
||
},
|
||
};
|
||
|
||
return new Promise((resolve, reject) => {
|
||
const req = http.request(options, (res) => {
|
||
let data = '';
|
||
res.on('data', (chunk) => (data += chunk));
|
||
res.on('end', () => {
|
||
resolve({
|
||
statusCode: res.statusCode,
|
||
data: data,
|
||
headers: res.headers,
|
||
});
|
||
});
|
||
});
|
||
|
||
req.on('error', reject);
|
||
req.setTimeout(3000, () => {
|
||
req.destroy();
|
||
reject(new Error('请求超时'));
|
||
});
|
||
req.end();
|
||
});
|
||
}
|
||
|
||
async function main() {
|
||
console.log('🔍 测试所有可能的MinIO凭据...\n');
|
||
|
||
for (const { name, accessKey, secretKey } of credentialsList) {
|
||
console.log(`📱 测试 ${name}:`);
|
||
console.log(` Access Key: ${accessKey}`);
|
||
console.log(` Secret Key: ${secretKey.substring(0, 8)}...`);
|
||
|
||
try {
|
||
const result = await testCredentials(accessKey, secretKey);
|
||
console.log(` 状态码: ${result.statusCode}`);
|
||
|
||
if (result.statusCode === 403) {
|
||
if (result.data.includes('SignatureDoesNotMatch')) {
|
||
console.log(' 🔐 签名错误 (但认证方式正确)');
|
||
} else if (result.data.includes('InvalidAccessKeyId')) {
|
||
console.log(' ❌ AccessKey无效');
|
||
} else {
|
||
console.log(' 🔐 权限被拒绝');
|
||
}
|
||
} else if (result.statusCode === 200) {
|
||
console.log(' ✅ 认证成功!');
|
||
} else {
|
||
console.log(` ⚠️ 未知状态: ${result.statusCode}`);
|
||
}
|
||
|
||
// 显示错误详情
|
||
if (result.data.includes('<Code>')) {
|
||
const codeMatch = result.data.match(/<Code>([^<]+)<\/Code>/);
|
||
const messageMatch = result.data.match(/<Message>([^<]+)<\/Message>/);
|
||
if (codeMatch && messageMatch) {
|
||
console.log(` 错误: ${codeMatch[1]} - ${messageMatch[1]}`);
|
||
}
|
||
}
|
||
} catch (error) {
|
||
console.log(` ❌ 连接失败: ${error.message}`);
|
||
}
|
||
|
||
console.log(''); // 空行分隔
|
||
}
|
||
|
||
console.log('💡 建议:');
|
||
console.log('1. 如果Docker凭据有效,更新应用配置使用 nice1234/nice1234');
|
||
console.log('2. 如果新AccessKey有效,确保它有正确的权限');
|
||
console.log('3. 可以通过MinIO控制台 (http://localhost:9001) 管理用户和权限');
|
||
}
|
||
|
||
main().catch(console.error);
|