Я использую Firebase для своих веб-приложений и мобильных приложений, и теперь у меня есть внутренний API, который я тоже собираюсь использовать. API требует токен JWT для аутентификации запросов и для его настройки, мне нужно указать JWT Secret, который используется для шифрования / дешифрования токена.
В firebase, я полагаю, я получаю токен, используя consttoken = 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»: это вдоль строки.