私はFirebaseにメールで&パスワード認証を使用しています。ユーザーが正常にサインインされると、トークンを含むAuthData
オブジェクトが届きます。
私はバックエンドにこのトークンを送って、それを確認し、それからuid
を抽出したいと思います - 残念ながら、私はこれを行う方法を知らない。Firebaseトークンの復号化/検証
私はFirebaseの秘密を知っています。jwt.ioに行くと、署名が確認され、正しいペイロードが表示されます。私は復号化処理のためのjjwtを使用してきた私のバックエンド上でJavaを実行しているので、残念ながら、それは常にSignatureException
をスロー
:
io.jsonwebtoken.SignatureException:JWT署名がローカルで計算された署名と一致しません。 JWTの妥当性は主張することができず、信頼されるべきではありません。私が使用してきたコードに続いて
:
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
byte[] encodedKey = Base64.decode("my-firebase-secret", Base64.DEFAULT);
Key k = new SecretKeySpec(encodedKey, signatureAlgorithm.getJcaName());
Claims claims = Jwts.parser()
.setSigningKey(k)
.parseClaimsJws("the-token").getBody();
私はまた、次のコードでそれを試してみた:
Claims claims = Jwts.parser()
.setSigningKey(DatatypeConverter.parseBase64Binary("my-firebase-secret"))
.parseClaimsJws(jwt).getBody();
しかし、同じ例外が発生しました。だから私は何が間違っているの?前もって感謝します。
ユーザーがサインインしてgetAuth()を呼び出すと、uidフィールドを持つオブジェクトが返されます。 https://www.firebase.com/docs/web/api/firebase/getauth.html –
@RonHarlev残念ながら私はUIDをプレーンテキストでサーバーに送信したくないということを認識しています。これはレンダリングするのでJWTの背後にあるセキュリティは役に立たない。私がそうしたとしても、トークンが有効であることを確認する必要があります。不正なサードパーティーが思い付いた生成物ではありません。 – user3420815