Google-Oauth
Description
Google-Oauth
is a server-side verification library for Google oauth2.
Google-Oauth
can help you to verify id_token
or access_token
which is generated from Google.
Usage (async)
1. Setup
To import Google-Oauth
to your project, please add this line into your Cargo.toml
.
[]
= { = "1" }
If you decided to use async
function, please select an async
runtime. Here are some options for you:
We use tokio in our example, and refactor our main function like this:
// #[async_std::main] // when you use [async-std]
// #[actix_web::main] // when you use [actix-web]
async
2. Do Verification (id_token
)
You can get your client_id
from Google Admin Console (or somewhere else), and an id_token
has been provided from
your user. They are all string-like
. Use the following code to do verification:
use AsyncClient;
async
3. Do Verification (AccessToken
)
Sometimes, Google will return an access_token
instead of id_token
. Google-Oauth
still provides API for validate
access_token
from Google.
Note: when validating access_token
, we don't matter the client_id
. So if you just need to validate access_token
,
you can simply pass an empty client_id
, just like this:
use AsyncClient;
async
Warning: the result of access_token
is different from the result of id_token
, although they have a same field sub
.
For full example, please view ./example/async_client/
Algorithm Supported
For validating id_token
, Google may use these two kinds of hash algorithm to generate JWTs:
- RS256
- ES256
However, I cannot find any approach to get a valid ES256
token, and as a result, I remained a unimplemented
branch,
and return an Err
if the JWT is ES256
hashed.
Feel free to create a new issue if you have an example. PR is welcome.
Usage (blocking)
Google-Oauth
also provides a blocking client. You need to enable blocking
feature:
[]
= { = "1", = ["blocking"] }
You can use google_oauth::Client
to validate tokens:
use Client;
For full example, please view ./examples/blocking/
WebAssembly (wasm)
Google-Oauth
supports wasm, feature wasm
is required.
[]
= { = "1", = ["wasm"] }
You can build this library with wasm-pack build --features wasm
. (cargo install wasm-pack
to install first.)
If you need to import wasm
into your project, you can use google_oauth::Client
to run async functions.
Features
default
: enableAsyncClient
.blocking
: enableClient
.wasm
: disableAsyncClient
andClient
(blocking
), enableClient
(wasm
).