У меня есть приложение VueJS, которое позволяет пользователям входить в систему и просматривать привилегированные страницы с данными из базы данных Firebase в реальном времени.После того, как пользователь вошел в интерфейс через auth0 на localhost:8080
, у меня возникли трудности с подключением к экспресс-серверу на localhost:8081
для пользовательских маркеров firebase.
Входы обрабатываются auth0.После вызова
auth.authorize({...})
,
выполняется функция обратного вызова:
handleCallback() {
auth.parseHash({ hash: window.location.hash }, (err, authResult) => {
if (authResult && authResult.accessToken) {
localStorage.setItem(ACCESS_TOKEN_KEY, authResult.accessToken);
localStorage.setItem(ID_TOKEN_KEY, authResult.idToken);
window.location.href = '/';
this.getFirebaseToken(authResult);
} else if (err) {
console.warn(err);
}
});
},
Проверка токенов в jwt.io показывает, что токены доступа и id почти идентичны (заголовок,большинство полей полезной нагрузки), за исключением следующих различий в полезной нагрузке:
"aud"
Маркер доступа имеет поле "azp"
, идентификатор имеет "at_hash"
и "nonce"
.
После этого я пытаюсь подключить пользователей к моему экспресс-серверу для получения собственного токена.
xhr запрос:
getFirebaseToken(resultObject) {
const xhr = new XMLHttpRequest();
xhr.open('GET', 'http://localhost:8081/auth/firebase', true);
xhr.setRequestHeader('Authorization', `Bearer ${resultObject.accessToken}`);
xhr.onload = () => {
console.log(JSON.parse(xhr.response));
};
xhr.send();
},
Код сервера:
app.get('/auth/firebase', jwtCheck, (req, res) => {
const uid = req.user.sub;
firebaseAdmin.auth().createCustomToken(uid)
.then(customToken => {
console.log(customToken);
res.json({ firebaseToken: customToken });
})
.catch(err => {
res.status(500).send({
message: 'Something went wrong in acquiring a Firebase token',
error: err,
})
})
});
На данный момент я не могу перейти к пользовательскому входу в firebase, поскольку получаю серию ошибок.
В интерфейсе, вкладка сетипоказывает, что этот запрос xhr имеет статус 'canceled'
.В консоли также есть неперехваченная ошибка.
Узловой сервер сообщает «недопустимая аудитория jwt, ожидаемое http://localhost:8081/
».
На панели мониторинга auth0 https://myapp.au.auth0.com, http://localhost:8080, http://localhost:8081
задаются как «Разрешенные веб-источники»и Allowed Origins (cors) для передней и задней части.
Предложения по отладке приветствуются.
РЕДАКТИРОВАТЬ: В Firefox есть несколько ошибок следующим образом:
1.
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://192.168.1.13:8080/sockjs-node/info?t=1540524441491. (Reason: CORS request did not succeed).[Learn More]
2.
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://myapp.au.auth0.com/userinfo. (Reason: CORS request did not succeed).[Learn More]
[Show/hide message details.] Error: app.js line 3245 > eval:127:19
3.
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8081/auth/firebase. (Reason: CORS request did not succeed).[Learn More]