Я использую firebase для своих веб-/мобильных приложений, и теперь у меня есть внутренний API, который я также хочу использовать. API требует токен JWT для аутентификации запросов, и для его настройки мне нужно указать секрет JWT, который используется для шифрования/дешифрования токена.
Я считаю, что в firebase я получаю токен, используя const token = await firebase.auth().currentUser.getIdToken(); Это то, что я передаю в API.
Однако я так и не понял, где взять JWT-секрет для настройки? Я попробовал ключ API, который отображается в консоли Firebase, я также попробовал ключи сервера/клиента, найденные в моей консоли по адресу https://console.developers.google.com.
однако, несмотря ни на что, я получаю JWSInvalidSignature при попытке сделать запросы к вызову API.
У кого-нибудь это работает? Где я могу получить секрет JWT от firebase для настройки на серверной части API? Заранее спасибо.
Вот подробности: 1. Я использую службу под названием postGrest, которая автоматически создает веб-API поверх базы данных postgres. Чтобы аутентифицировать запросы, вы настраиваете службу, указав пользовательское утверждение под названием «роль», а также вам необходимо указать секрет JWT, чтобы он мог декодировать токен.
Вот мой простой вызов API:
const fetchdata = async () => {
const token = await firebase.auth().currentUser.getIdToken();
let axiosConfig = {
headers: {
'Authorization': 'Bearer' + token
}
}
const data = await axios.get(`http://localhost:8080/users`,
axiosConfig);
}
Также обратите внимание, что я могу имитировать это в командной строке bash, используя следующий код: Обратите внимание, что я получаю токен из getIdToken() выше.
export TOKEN="eyJhbGciOiJSUzI1NiIsImtpZCI6ImQ2YzM5Mzc4YWVmYzA2YzQyYTJlODI1OTA0ZWNlZDMwODg2YTk5MjIiLCJ0eXAiOiJKV1QifQ.eyJ1c2VyaWQiOiI1NSIsImlzcyI6Imh0dHBzOi8vc2VjdXJldG9rZW4uZ29vZ2xlLmNvbS9wb3N0Z3Jlc3QtYjRjOGMiLCJhdWQiOiJwb3N0Z3Jlc3QtYjRjOGMiLCJhdXRoX3RpbWUiOjE1NzExNTIyMjQsInVzZXJfaWQiOiJNMXZwQ3A2ZjlsaFdCblRleHh1TjlEdXIzUXAyIiwic3ViIjoiTTF2cENwNmY5bGhXQm5UZXh4dU45RHVyM1FwMiIsImlhdCI6MTU3MTE1OTQ0NSwiZXhwIjoxNTcxMTYzMDQ1LCJlbWFpbCI6InNwb25nZWJvYkBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImZpcmViYXNlIjp7ImlkZW50aXRpZXMiOnsiZW1haWwiOlsic3BvbmdlYm9iQGdtYWlsLmNvbSJdfSwic2lnbl9pbl9wcm92aWRlciI6InBhc3N3b3JkIn19.nKuovs0Gx_ZKp17dI3kfz6GQofIMEOTA8RqTluwEs-5r-oTbKgpG33uS7fs7txVxvWIb_3fbN3idzfDHZevprMkagbHOd73CxTFBM7pr1bD2OKSK9ZPYfSt9OhvgJL51vBN3voLcNAb5iWVVl2XMqkcXeDoBi8IOKeZr27_DsRx48GSi7HieHWscF1lujSEr2C9tdAek3YyNnr3IcGI8cTSPHPaIbYl-8CaHQO2fUiGHEAaD7sqHxp3otJio56zOoNAy44P_nwORlMFZC0Rm8SaATpbmIkgbGYWHZHty70lmlYGVHTuM_hr2s7z2YhAjuacvBMgusZpyoVnoe3FQeA"
curl http://localhost:8080/contacts -H "Authorization: Bearer $TOKEN"
Возвращается следующее: {"message":"JWSError JWSInvalidSignature"}
Для секрета JWT я пробовал несколько значений, но, похоже, ни одно из них не работает. Это включает в себя «Ключ API» из проекта firebase, а также попытку «Сгенерировать ключ», который загружает новый файл .json, а внутри есть «private_key»: это строка.