Я получаю сообщение об ошибке:
Неверный формат пользовательского токена. Пожалуйста, проверьте документацию.
И ошибка при проверке моего токена в JWT с сообщением
Неверная подпись.
Я уже не знаю, какой чек в моем токене действителен.
Пожалуйста, направьте меня на правильный путь, который решает проблему. Спасибо!
Я выполнил шаги, описанные здесь: Firebase .
Попытка сгенерировать пользовательские токены для метода firebase Auth.auth (). SignIn (withCustomToken:) . Используйте рамки SwiftyJWT .
Я генерирую ключ на Онлайновый генератор ключей RSA
Время истечения позже, чем время выдачи на 3600 секунд. Эти значения в секундах с эпохи UNIX
Добавить настраиваемое поле, потому что SwiftyJWT имеет только jwtId , но мне нужно uid , My uid длиной от 1 до 36 символов
Использовать алгоритм RS256
Ниже добавьте код:
let bodyKey = "----- НАЧАТЬ RSA ЧАСТНЫЙ КЛЮЧ ----- \ n'some-generate-key '\ n —— END RSA ЧАСТНЫЙ КЛЮЧ -----"
переменная полезная нагрузка = 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"
let someUID = "dfsgdfg4546ysg45t67"
полезная нагрузка. customFields = ["uid": EncodableValue (значение: someUID)]
let privateKey = попробовать? RSAKey (base64String: bodyKey, keyType: .PRIVATE)
guard let key = privateKey else {return ""}
let jwtWithKeyId = JWT (полезная нагрузка: полезная нагрузка, алгоритм: .rs256 (ключ))
Проверьте это в JWT и получите результат:
- заголовок
{
"alg": "RS256",
"typ": "JWT"
}
- 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"
}
- Проверить подпись :
Поля «RSA PRIVATE KEY» и «RSA PUBLIC KEY» заполнены. Но есть сообщение с ошибкой «Неверная подпись».