fuchsnj / google-jwt-verify Goto Github PK
View Code? Open in Web Editor NEWA client to verify Google JSON web tokens
A client to verify Google JSON web tokens
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
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
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.