У меня есть общий план хостинга, который имеет только PHP (без Java, no node.js). Мне нужно отправить токен идентификатора firebase из моего приложения для Android и проверить его с помощью PHP-JWT.Как проверить токен базы данных firebase с помощью PHP (JWT)?
Я следую учебник: Verify Firebase ID tokens
Он говорит:.
«Если Бэкэнд на языке, который не имеет официального Firebase Admin SDK, вы можете проверить идентификационные маркеры Во-первых, найдите стороннюю библиотеку JWT для своего языка. Затем проверьте заголовок, полезную нагрузку и подпись маркера ID. "
Я нашел эту библиотеку: Firebase-PHP-JWT. В примере gitHub; я не мог понять
$ ключевую роль:
`$key = "example_key";`
и
$ лексема часть:
`$token = array(
"iss" => "http://example.org",
"aud" => "http://example.com",
"iat" => 1356999524,
"nbf" => 1357000000
);`
Мои вопросы:
- Что должно быть $ key переменная?
- Почему & token переменная - это массив? Токен, который будет отправлен из мобильного приложения, является строкой.
- Если кто-то может опубликовать полный пример проверки идентификатора firebase с помощью PHP-JWT, я был бы признателен.
EDIT:
Окей я получил точку. Пример GitHub показывает, как генерировать код JWT (кодировать) и как его декодировать. В моем случае мне нужно только декодировать jwt, который закодирован firebase. Таким образом, мне нужно использовать только этот код:
$decoded = JWT::decode($jwt, $key, array('HS256'));
В этом коде часть $ JWT является firebase ID маркера. Для $ ключевых переменная документация говорит:
Наконец, убедитесь, что ID маркер был подписан секретным ключом, соответствующим любому малышу лексема в. Возьмите открытый ключ от https://www.googleapis.com/robot/v1/metadata/x509/[email protected] и используйте библиотеку JWT для проверки подписи. Используйте значение max-age в заголовке Cache-Control ответа от этой конечной точки, чтобы узнать, когда обновлять открытые ключи.
Я не понимаю, как передать эти открытые ключи для декодирования функции.Ключи что-то вроде этого:
«----- BEGIN CERTIFICATE ----- \ nMIIDHDCCAgSgAwIBAgIIZ36AHgMyvnQwDQYJKoZIhvcNAQEFBQAwMTEvMC0GA1UE \ nAxMmc2VjdXJldG9rZW4uc3lzdGVtLmdzZXJ2aWNlYWNjb3VudC5jb20wHhcNMTcw \ nMjA4MDA0NTI2WhcNMTcwMjExMDExNTI2WjAxMS8wLQYDVQQDEyZzZWN1cmV0b2tl \ nbi5zeXN0ZW0uZ3NlcnZpY2VhY2NvdW50LmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD \ nggEPADCCAQoCggEBANBNTpiQplOYizNeLbs + r941T392wiuMWr1gSJEVykFyj7fe \ nCCIhS/zrmG9jxVMK905KwceO/FNB4SK + l8GYLb559xZeJ6MFJ7QmRfL7Fjkq7GHS \ n0/sOFpjX7vfKjxH5oT65Fb1 + Hb4RzdoAjx0zRHkDIHIMiRzV0nYleplqLJXOAc6E \ n5HQros8iLdf + ASdqaN0hS0nU5aa/ПРОЦЕССОРЫ/EHQwfbEgYraZLyn5NtH8SPKIwZIeM7Fr \ ИПВ + SS7JSadsqifrUBRtb // fueZ/FYlWqHEppsuIkbtaQmTjRycg35qpVSEACHkKc \ nW05rRsSvz7q1Hucw6Kx/dNBBbkyHrR4Mc/wg31kCAwEAAaM4MDYwDAYDVR0TAQH/\ nBAIwADAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0lAQH/BAW wCgYIKwYBBQUHAwIwDQYJ \ nKoZIhvcNAQEFBQADggEBAEuYEtvmZ4uReMQhE3P0iI4wkB36kWBe1mZZAwLA5A + U \ niEODMVKaaCGqZXrJTRhvEa20KRFrfuGQO7U3FgOMyWmX3drl40cNZNb3Ry8rsuVi \ nR1dxy6HpC39zba/DsgL07enZPMDksLRNv0dVZ/Х/wMrTLrwwrglpCBYUlxGT9RrU \ nf8nAwLr1E4EpXxOVDXAX8bNBl3TCb2fu6DT62ZSmlJV40K + wTRUlCqIewzJ0wMt6 \ NO8 + 6kVdgZH4iKLi8gVjdcFfNsEpbOBoZqjipJ63l4A3mfxOkma0d2XgKR12KAfYX \ ncAVPgihAPoNoUPJK0Nj + CmvNlUBXCrl9TtqGjK7AKi8 = \ п ----- END CERTIFICATE ----- \ п»
Должен ли я преобразовать этот открытый ключ в нечто, прежде чем передать его? Я попытался удалить все "\ n" и "----- НАЧАТЬ СЕРТИФИКАТ -----", "----- НАЧАТЬ СЕРТИФИКАТ -----" ... Но нет удачи. Тем не менее я получаю недопустимую ошибку подписи. Любой совет?
Информация о версии Firebase? Обратите внимание, что вы не проверяете токены в PHP. Вы их набираете, отправляете их клиенту, а клиент выполняет проверку. – Kato
@ Kato я использую последнюю версию. «Com.google.firebase: firebase-Auth: 10,0.1' . Я не понял. После входа клиента на мобильный, firebase auth возвращает токен. Я хочу проверить этот токен на стороне сервера с помощью PHP, чтобы убедиться, что токен, созданный firebase, или нет. Если проверка подтвердится, я разрешу клиенту. – eren130