Как исправить 'Неверный формат пользовательского токена. Пожалуйста, проверьте документацию и неверную подпись, когда я проверяю токен - PullRequest
0 голосов
/ 01 апреля 2019

Я получаю сообщение об ошибке:

Неверный формат пользовательского токена. Пожалуйста, проверьте документацию.

И ошибка при проверке моего токена в JWT с сообщением

Неверная подпись.

Я уже не знаю, какой чек в моем токене действителен.

Пожалуйста, направьте меня на правильный путь, который решает проблему. Спасибо!

Я выполнил шаги, описанные здесь: Firebase . Попытка сгенерировать пользовательские токены для метода firebase Auth.auth (). SignIn (withCustomToken:) . Используйте рамки SwiftyJWT .

  1. Я генерирую ключ на Онлайновый генератор ключей RSA

  2. Время истечения позже, чем время выдачи на 3600 секунд. Эти значения в секундах с эпохи UNIX

  3. Добавить настраиваемое поле, потому что SwiftyJWT имеет только jwtId , но мне нужно uid , My uid длиной от 1 до 36 символов

  4. Использовать алгоритм RS256

Ниже добавьте код:

  1. let bodyKey = "----- НАЧАТЬ RSA ЧАСТНЫЙ КЛЮЧ ----- \ n'some-generate-key '\ n —— END RSA ЧАСТНЫЙ КЛЮЧ -----"

  2. переменная полезная нагрузка = JWTPayload ()

полезная нагрузка. эмитент = "firebaseserviceaccount@'my-project-id-firebaseApp'.iam.gserviceaccount.com"

полезная нагрузка. subject = "firebaseserviceaccount@'my-project-id-firebaseApp'.iam.gserviceaccount.com"

Полезная нагрузка. Проблема в = Int (Date (). TimeIntervalSince1970)

полезная нагрузка. срок действия = payload.issueAt! + 3600

полезная нагрузка. аудитория = "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit"

  1. let someUID = "dfsgdfg4546ysg45t67" полезная нагрузка. customFields = ["uid": EncodableValue (значение: someUID)]

    let privateKey = попробовать? RSAKey (base64String: bodyKey, keyType: .PRIVATE)

    guard let key = privateKey else {return ""}

  2. let jwtWithKeyId = JWT (полезная нагрузка: полезная нагрузка, алгоритм: .rs256 (ключ))

Проверьте это в JWT и получите результат:

  1. заголовок
    {
      "alg": "RS256",
      "typ": "JWT"
    }
  1. Payload
    {

      "exp": 1554135867,


      "iat": 1554132267,

      "iss": "firebaseserviceaccount@'my-project-id-firebaseApp'.iam.gserviceaccount.com",

      "uid": "dfsgdfg4546ysg45t67",

      "sub": "firebaseserviceaccount@'my-project-id-firebaseApp'.iam.gserviceaccount.com",

      "aud": "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit"

    }
  1. Проверить подпись :

Поля «RSA PRIVATE KEY» и «RSA PUBLIC KEY» заполнены. Но есть сообщение с ошибкой «Неверная подпись».

1 Ответ

0 голосов
/ 01 апреля 2019

Жетоны Firebase не могут быть созданы через SwiftyJWT. Пользовательские токены Firebase необходимо создавать с помощью Firebase Admin Auth SDK . Ссылка показывает инструкции по созданию токена на стороне сервера, который вы затем передаете клиенту для проверки. Эта функциональность доступна для Node.js, Java, python, go и C #.

...