3 releases

0.1.2 Jan 6, 2023
0.1.1 Jan 5, 2023
0.1.0 Jan 5, 2023

#27 in #firebase

MIT license

8KB
92 lines

firebase-jwt-rs

Firebase JWT decoding utility for Rust.

Screen Shot 2023-01-05 at 11 03 13 PM

What is this?

If you have a Rust server and plan to have API for verifying your firebase users' client token, then it's just for you!

It only contains small utility to decode your client token.

Read more:

https://firebase.google.com/docs/auth/admin/verify-id-tokens#verify_id_tokens_using_a_third-party_jwt_library

Flow

  1. In your frontend, you can get your uid + client-token by using Firebase Client SDK.

    Sample: https://firebase.google.com/docs/auth/admin/verify-id-tokens#retrieve_id_tokens_on_clients

  2. Then your frontend can hit the backend Rust API and send over uid+client-token to the HTTP Header/POST body (up to you), which will be passed to verify_token(uid, client_token) util.

  3. Add FIREBASE_PROJECT_ID environment variable to your backend on local and production server

  4. Backend Rust will verify and send back the JWT claim response (including extracted user's data, and verified user_id) back as json

How to use

use firebase_jwt_rs::*;
use jsonwebtoken::TokenData;
use std::error::Error;

let uid = "your-user-uid";
let client_token = "your-client-token";

let result: Result<TokenData<Claims>, Box<dyn Error>> = verify_token(uid, client_token).await;

match result {
  Ok(res: TokenData<Claims>) => {
    let text: String = serde_json::to_string(&res.claims).unwrap();
    println!("result:{text}");
  }
  Err(e) => {
    println!("err:{e}");
  }
}

License

MIT

Dependencies

~10–26MB
~425K SLoC