fenghuo/test-all-creds.js

104 lines
2.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);