2017-02-07 5 views
-1

私はAndroidのクライアント用にPHPでバックエンドを持っていますが、Firebaseが提供する電子メール/パスワードでログインしています。私はバックエンドのトークンを確認したい。私は今まで私が修正することができなかったいくつかの問題を抱えています。最初は、ヘッダは、このサイトではそれらによって提供されるいくつかの公開鍵と一致している必要があり子供が含まれていますFirebaseた内容に応じて、疑問である:https://www.googleapis.com/robot/v1/metadata/x509/[email protected] よく私はいくつかのテストを行っていると私はこの子供ではないことを考え出しいつも同じ、それは子供と一致しなければならない公開鍵のどれかであることを意味します。:私はこれをjwt.ioのウェブサイトでテストしましたが、うまく動作しますが、PHPコードではうまく動作しません。 キッズがエンコードされていて、それをデコードするために公開鍵が必要な場合は、どのように私が公開鍵を使用すべきかを知ることができますか?PHPでのFirebaseトークンの確認

私はfirebase/php-jwtライブラリを使用していますが、トークンをデコードするために提供されているドキュメントに従っていますが、これは動作しません。私が使用しています:

<?php 
    require '../vendor/autoload.php'; 
    use \Firebase\JWT\JWT; 
    $jwt = "token from the android client"; 
    $key = "-----BEGIN CERTIFICATE-----\nMIIDHDCCAgSgAwIBAgIIBhyg0WUm0qIwDQYJKoZIhvcNAQEFBQAwMTEvMC0GA1UE\nAxMmc2VjdXJldG9rZW4uc3lzdGVtLmdzZXJ2aWNlYWNjb3VudC5jb20wHhcNMTcw\nMjA3MDA0NTI2WhcNMTcwMjEwMDExNTI2WjAxMS8wLQYDVQQDEyZzZWN1cmV0b2tl\nbi5zeXN0ZW0uZ3NlcnZpY2VhY2NvdW50LmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBANgrjKWwUlWeZukViyrrLS6nOWlgQnEahP/sRlVWCC2mkWdB\n9NXsE7L8ZY9uhGNBEC8KknzpeFSJFKBVfRW7onrReCuz2RPJ5tk/7ZP2naY3mLO8\nkU/aHlIYfvcmtJzlISABCLMg5RiUY1IhQDSj8kYKVTo2JhD/plZZ85xHHJ8BpHQv\nWbvtlAJ4WqG8NstOG+LoOMr8Ayi7xsPw4AyT6iHnXcFExzvVsHs/7UBkJKF4eX8L\nocbdfs8qb9T/Bua8mRUahVj9hHntoxG0TCOpV+frxBwHw+wZgig/FRod9u5FirMC\n9tjctwaf9b5pSHMhVhPTAuqg3xwMr/Wq76lCNTkCAwEAAaM4MDYwDAYDVR0TAQH/\nBAIwADAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDQYJ\nKoZIhvcNAQEFBQADggEBABcOJ8zqu+RH9UXf90O2mRMY2CjiLWowIzOX2l+2aHfm\nd9QUM4EpS+E0UbmaOsiMSkxs4rWGppWPqC8Y4dypctXtzftWNMatPZyLni4zLT/t\nKDItjmaN9QrBo1XL+TUg7fw876C4G3xGldqTNgjrQwyQI1QhnNJHpbWqkjJkixX5\ndZ45E+UVoc1uw5VlbdN4/NUKQ4OOKyvHIn5dupNFOF1xrkQmEexE7NA5dENGP07j\no2XDfaOCDKiugV6vCIsQZo9BqTRJIC/3PZFfIyvxmwm5Vq9CInGX1DKS2ToasM5H\nnc5B3AxX3+6fosel/yQZaRfyy7o/FiVdj3gIF+MPe7s=\n-----END CERTIFICATE-----\n"; 
    $decoded = JWT::decode($jwt, $key, array('RS256')); 
    var_dump($decoded); 
?> 

このスクリプトは私にエラーのいくつかの種類を与えています。

私は何か助けていただきありがとうございます。

+0

トークンの生成と検証を処理する独自のライブラリ(https://github.com/kreait/firebase-tokens-phpまたはその親https://github.com/kreait/)を宣伝したいfirebase-php :) – jeromegamez

答えて

0

子供がエンコードされている場合に公開鍵を使用する必要があることをどのように知ることができますか?公開鍵が必要ですか?

KIDヘッダーはエンコードされません。有効な公開鍵を指す配列キーを表す文字列値です。 まず、公開鍵JSONをhttps://www.googleapis.com/robot/v1/metadata/x509/[email protected]から取得する必要があります。次に、それを配列にデコードし、KIDを使用して適切な公開鍵を取得します。

私がいる第二のトラブルは、私はfirebase/PHP-JWTライブラリを使用している、と私は、トークンを復号化するために、それらが提供するドキュメントを以下だし、それが

動作しないということです

取得しているエラーは何ですか?正しいアルゴリズムを使用していますか? RS256をHS256に変更してみてください。

+0

多くのおかげで、私はこの方法で終了しました – Rorschach

関連する問題