Где вы можете найти / найти JWT-Secret на базе Firebase? - PullRequest
0 голосов
/ 15 октября 2019

Я использую 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»: это вдоль строки.

1 Ответ

0 голосов
/ 15 октября 2019

Инструкции по использованию сторонней библиотеки для проверки токена идентификатора авторизации Firebase: здесь . Здесь говорится, что открытый ключ можно найти здесь:

https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com

...