Skip to content

Firebase JWT Rust package. Small utility to decode your Firebase client token in Rust

License

Notifications You must be signed in to change notification settings

antonybudianto/firebase-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Firebase JWT Rust package. Small utility to decode your Firebase client token in Rust

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published