Coder Social home page Coder Social logo

google-jwt-verify's People

Contributors

charles-johnson avatar fuchsnj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

google-jwt-verify's Issues

Failed to compile crate

Deserialize is imported twice in the same module (client).
I cannot build the crate (tried both Rust v1.47.0 and v1.48.0) when using it as a dependency, however, if I fork this project, the crate can successfully be built using Rust v1.48.0.

Error message when compiling as a dependency:

src/client.rs:9:20
  |
8 | use serde::Deserialize;
  |     ------------------ previous import of the macro `Deserialize` here
9 | use serde_derive::{Deserialize, Serialize};
  |                    ^^^^^^^^^^^--
  |                    |
  |                    `Deserialize` reimported here
  |                    help: remove unnecessary import
  |
  = note: `Deserialize` must be defined only once in the macro namespace of this module

Support firebase authentication ID tokens

As I understand the current implementation only supports verify Google Sign-in ID tokens which use different sets of keys to sign tokens than Firebase Authentication ID tokens.

The table below summarises the difference in validation procedures between the two services

Service Google Sign-in Firebase Authentication
Certificates JWK or PEM JWK or PEM
Valid Issuer [https://]accounts.google.com https://securetoken.google.com/<projectId>
Valid Audience <clientId> <projectId>
Required Payload Claims aud (Audience), azp, exp, iat, iss (Issuer), sub aud (Audience), auth_time, exp, iat, iss (Issuer), sub
Timestamps required in the future exp exp
Timestamps required before exp iat auth_time, iat

I am going to try to implement an alternative Client for firebase

Official documentation for verifying Firebase Authentication ID tokens: https://firebase.google.com/docs/auth/admin/verify-id-tokens

Fails to build: failed to run custom build command for `openssl-sys v0.9.72`

error: failed to run custom build command for `openssl-sys v0.9.72`
Caused by:
  process didn't exit successfully: `/Users/matt/dev/authtest/server/target/debug/build/openssl-sys-ef121300648d6c0b/build-script-main` (exit status: 101)
  --- stdout
  cargo:rustc-cfg=const_fn
  cargo:rerun-if-env-changed=AARCH64_APPLE_DARWIN_OPENSSL_LIB_DIR
  AARCH64_APPLE_DARWIN_OPENSSL_LIB_DIR unset
  cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
  OPENSSL_LIB_DIR unset
  cargo:rerun-if-env-changed=AARCH64_APPLE_DARWIN_OPENSSL_INCLUDE_DIR
  AARCH64_APPLE_DARWIN_OPENSSL_INCLUDE_DIR unset
  cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
  OPENSSL_INCLUDE_DIR unset
  cargo:rerun-if-env-changed=AARCH64_APPLE_DARWIN_OPENSSL_DIR
  AARCH64_APPLE_DARWIN_OPENSSL_DIR unset
  cargo:rerun-if-env-changed=OPENSSL_DIR
  OPENSSL_DIR unset
  cargo:rerun-if-env-changed=OPENSSL_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=OPENSSL_STATIC
  cargo:rerun-if-env-changed=OPENSSL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  run pkg_config fail: "Could not run `\"pkg-config\" \"--libs\" \"--cflags\" \"openssl\"`\nThe pkg-config command could not be found.\n\nMost likely, you need to install a pkg-config package for your OS.\nTry `brew install pkg-config` if you have Homebrew.\n\nIf you've already installed it, ensure the pkg-config command is one of the\ndirectories in the PATH environment variable.\n\nIf you did not expect this build to link to a pre-installed system library,\nthen check documentation of the openssl-sys crate for an option to\nbuild the library from source, or disable features or dependencies\nthat require pkg-config."
  --- stderr
  thread 'main' panicked at '
  Could not find directory of OpenSSL installation, and this `-sys` crate cannot
  proceed without this knowledge. If OpenSSL is installed and this crate had
  trouble finding it,  you can set the `OPENSSL_DIR` environment variable for the
  compilation process.
  Make sure you also have the development packages of openssl installed.
  For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora.
  If you're in a situation where you think the directory *should* be found
  automatically, please open a bug at https://github.com/sfackler/rust-openssl
  and include information about your system as well as this message.
  $HOST = aarch64-apple-darwin
  $TARGET = aarch64-apple-darwin
  openssl-sys = 0.9.72
  ', /Users/matt/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.72/build/find_normal.rs:180:5
  stack backtrace:
     0:        0x104dfc918 - std::backtrace_rs::backtrace::libunwind::trace::h9907622628e24064
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
     1:        0x104dfc918 - std::backtrace_rs::backtrace::trace_unsynchronized::h1d49e29b934b7e2a
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
     2:        0x104dfc918 - std::sys_common::backtrace::_print_fmt::h50f2fe166e1b6e90
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/sys_common/backtrace.rs:67:5
     3:        0x104dfc918 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::he8318ba1b395511e
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/sys_common/backtrace.rs:46:22
     4:        0x104e17c10 - core::fmt::write::hee0af4563343c8ee
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/core/src/fmt/mod.rs:1168:17
     5:        0x104df8524 - std::io::Write::write_fmt::h5c18bb157ca4a2c9
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/io/mod.rs:1653:15
     6:        0x104dfee48 - std::sys_common::backtrace::_print::h6ece0096fef7a389
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/sys_common/backtrace.rs:49:5
     7:        0x104dfee48 - std::sys_common::backtrace::print::hfe8fa654207d1725
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/sys_common/backtrace.rs:36:9
     8:        0x104dfee48 - std::panicking::default_hook::{{closure}}::h29823a4a77697f56
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/panicking.rs:290:50
     9:        0x104dfe9f0 - std::panicking::default_hook::h25400af29701b30b
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/panicking.rs:307:9
    10:        0x104dff414 - std::panicking::rust_panic_with_hook::h72963477f0c5832f
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/panicking.rs:685:17
    11:        0x104dff184 - std::panicking::begin_panic_handler::{{closure}}::h1984d3bf24a2f613
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/panicking.rs:581:13
    12:        0x104dfcde4 - std::sys_common::backtrace::__rust_end_short_backtrace::h9c3e26240cdae269
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/sys_common/backtrace.rs:139:18
    13:        0x104dfeeec - rust_begin_unwind
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/panicking.rs:577:5
    14:        0x104e1df3c - core::panicking::panic_fmt::hf8d773bd6c69fe3c
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/core/src/panicking.rs:110:14
    15:        0x104d60884 - core::panicking::panic_display::h0076a9ff93c004c9
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/core/src/panicking.rs:65:5
    16:        0x104d644b8 - build_script_main::find_normal::find_openssl_dir::h399a3874d8bf8f7e
                                 at /Users/matt/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.72/build/find_normal.rs:180:5
    17:        0x104d63738 - build_script_main::find_normal::get_openssl::{{closure}}::h05bf3d7762ab04e2
                                 at /Users/matt/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.72/build/find_normal.rs:15:68
    18:        0x104d6526c - core::option::Option<T>::unwrap_or_else::he78c755d10706dfa
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/core/src/option.rs:802:21
    19:        0x104d6357c - build_script_main::find_normal::get_openssl::hef769155eb08f709
                                 at /Users/matt/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.72/build/find_normal.rs:15:31
    20:        0x104d5c4f8 - build_script_main::find_openssl::ha48bd26c162d4cb9
                                 at /Users/matt/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.72/build/main.rs:57:5
    21:        0x104d5c580 - build_script_main::main::hf8c545b1764a7ec7
                                 at /Users/matt/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.72/build/main.rs:65:34
    22:        0x104d60ffc - core::ops::function::FnOnce::call_once::h607d4d9fed5ba1ff
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/core/src/ops/function.rs:227:5
    23:        0x104d61df0 - std::sys_common::backtrace::__rust_begin_short_backtrace::h4afad16d651054b9
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/sys_common/backtrace.rs:123:18
    24:        0x104d61dc0 - std::rt::lang_start::{{closure}}::h4ca0b24dd37fa98c
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/rt.rs:145:18
    25:        0x104dfc13c - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::heb1f477de8c394f7
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/core/src/ops/function.rs:259:13
    26:        0x104dfc13c - std::panicking::try::do_call::hcbb44946e052578f
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/panicking.rs:485:40
    27:        0x104dfc13c - std::panicking::try::hce7fdfe55346010a
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/panicking.rs:449:19
    28:        0x104dfc13c - std::panic::catch_unwind::hcd7e390a954e88d6
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/panic.rs:136:14
    29:        0x104dfc13c - std::rt::lang_start_internal::{{closure}}::hdc47a8964408f082
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/rt.rs:128:48
    30:        0x104dfc13c - std::panicking::try::do_call::h38af7728d4bda2cd
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/panicking.rs:485:40
    31:        0x104dfc13c - std::panicking::try::h687ab2a7e235c5c9
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/panicking.rs:449:19
    32:        0x104dfc13c - std::panic::catch_unwind::h8c21db89d7909d19
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/panic.rs:136:14
    33:        0x104dfc13c - std::rt::lang_start_internal::he49c836e7c4e5bcd
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/rt.rs:128:20
    34:        0x104d61d8c - std::rt::lang_start::h6e68a3e619df8d0a
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/std/src/rt.rs:144:17
    35:        0x104d5f3f0 - <unknown>
                                 at /rustc/777bb86bcdbc568be7cff6eeeaaf81a89b4aa50b/library/core/src/str/pattern.rs:706:10

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.