자습서 (here)를 따라 왔지만 클라이언트를 서버에 연결할 수 없습니다. 내가 그 값을 내 Auth0 계정에서 온 재확인 내 환경 변수 (특히 CLIENT_ID
, DOMAIN
, CLIENT_SECRET
및 CONNECTION
)가브로커에 연결하는 중 "잘못된 사용자 이름 또는 암호"오류가 발생했습니다.
Error: Connection refused: Bad username or password
at MqttClient._handleConnack (${project_dir}/node_modules/mqtt/lib/client.js:760:24)
at MqttClient._handlePacket (${project_dir}/node_modules/mqtt/lib/client.js:300:12)
at process (${project_dir}/node_modules/mqtt/lib/client.js:242:12)
at Writable.writable._write (${project_dir}/node_modules/mqtt/lib/client.js:252:5)
at doWrite (${project_dir}/node_modules/mqtt/node_modules/readable-stream/lib/_stream_writable.js:345:64)
at writeOrBuffer (${project_dir}/node_modules/mqtt/node_modules/readable-stream/lib/_stream_writable.js:334:5)
at Writable.write (${project_dir}/node_modules/mqtt/node_modules/readable-stream/lib/_stream_writable.js:271:11)
at Socket.ondata (_stream_readable.js:528:20)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
하지만 그들은 좋은 것 : 나는 항상 다음과 같은 오류 메시지 (전체 스택 트레이스를) 얻을 .
MQTT.js의 현재 버전과 일치시키기 위해 클라이언트 코드를 약간 변경했습니다. 코드는 다음과 같습니다.
브로커 코드는 자습서에 표시된 것과 매우 유사합니다. 변경하기 전에이 오류를 해결하고 싶습니다.
const mosca = require('mosca')
const Auth0Mosca = require('auth0mosca');
require('dotenv').config();
const settings = {
port: 1883
};
if (!process.env.AUTH0_DOMAIN || !process.env.AUTH0_CLIENT_ID ||
!process.env.AUTH0_CLIENT_SECRET || !process.env.AUTH0_CONNECTION) {
throw 'Make sure you have AUTH0_DOMAIN, AUTH0_CLIENT_ID, AUTH0_CLIENT_SECRET and AUTH0_CONNECTION in your .env file';
}
const auth0 = new Auth0Mosca('https://' + process.env.AUTH0_DOMAIN, process.env.AUTH0_CLIENT_ID, process.env.AUTH0_CLIENT_SECRET, process.env.AUTH0_CONNECTION);
// mosca server
const server = new mosca.Server(settings);
server.authenticate = auth0.authenticateWithCredentials();
server.authorizePublish = auth0.authorizePublish();
server.authorizeSubscribe = auth0.authorizeSubscribe();
server.on('ready', setup);
// MQTT server is ready
function setup() {
console.log('Mosca server is up and running');
}
server.on('clientConnected', function(client) {
console.log('New connection: ', client.id);
});
나는 아마 어리석은 실수이거나 이것을 일으키는 라이브러리 업데이트 일 것입니다. 후자의 경우 다음과 같습니다.
"auth0mosca": "^0.1.0",
"mosca": "^2.3.0",
"mqtt": "^2.5.0"
마지막으로 요청이 브로커에 도달했는지 확인했습니다.
사용자를 인증하기 위해 실제로 무엇을하는지 알 수 있도록 브로커 코드도 포함하고 싶을 것입니다. – hardillb
완료, 힌트를 보내 주셔서 감사합니다! –
문제를 발견했습니다. Auth0에서 JsonWebToken Signature Algorithm의 RS256 알고리즘을 지정했습니다. 그러나 Auth0Mosca는 토큰을 확인하는 데 Auth0Mosca를 사용하지 않습니다. 나는 모두에게 동일한 문제에 직면하기 때문에 나중에 대답을 작성하겠습니다. 내가 나 자신을 해결할 수있는 것을 묻는 것에 대해 유감스럽게 생각한다! –