Hono Firebase Auth middleware for Cloudflare Workers.
This is a Firebase Auth middleware library for Hono which is used firebase-auth-cloudflare-workers.
Currently only Cloudflare Workers are supported officially. However, it may work in other environments as well, so please let us know in an issue if it works.
Synopsis
Module Worker Syntax (recommend)
import { Hono } from "hono";
import { VerifyFirebaseAuthConfig, VerifyFirebaseAuthEnv, verifyFirebaseAuth, getFirebaseToken } from "@honojs/firebase-auth";
const config: VerifyFirebaseAuthConfig = {
projectId: "your-project-id",
}
const app = new Hono<{ Bindings: VerifyFirebaseAuthEnv }>()
app.use("*", verifyFirebaseAuth(config));
app.get("/hello", (c) => {
const idToken = getFirebaseToken(c)
return c.json(idToken)
});
export default app
Service Worker Syntax
import { Hono } from "hono";
import { VerifyFirebaseAuthConfig, verifyFirebaseAuth, getFirebaseToken } from "@honojs/firebase-auth";
const config: VerifyFirebaseAuthConfig = {
projectId: "your-project-id",
keyStore: WorkersKVStoreSingle.getOrInitialize(
PUBLIC_JWK_CACHE_KEY,
PUBLIC_JWK_CACHE_KV
),
firebaseEmulatorHost: FIREBASE_AUTH_EMULATOR_HOST,
}
const app = new Hono()
app.use("*", verifyFirebaseAuth(config));
app.get("/hello", (c) => {
const idToken = getFirebaseToken(c)
return c.json(idToken)
});
app.fire()
Config (VerifyFirebaseAuthConfig
)
projectId: string
(required)
This field indicates your firebase project ID.
Based on this configuration, the JWT created by firebase auth is looked for in the HTTP headers. The default is "Authorization".
keyStore?: KeyStorer
(optional)
This is used to cache the public key used to validate the Firebase ID token (JWT). This KeyStorer type has been defined in firebase-auth-cloudflare-workers library.
If you don't specify the field, this library uses WorkersKVStoreSingle instead. You must fill in the fields defined in VerifyFirebaseAuthEnv
.
keyStoreInitializer?: (c: Context) => KeyStorer
(optional)
Use this when initializing KeyStorer and environment variables, etc. are required.
If you don't specify the field, this library uses WorkersKVStoreSingle instead. You must fill in the fields defined in VerifyFirebaseAuthEnv
.
disableErrorLog?: boolean
(optional)
Throws an exception if JWT validation fails. By default, this is output to the error log, but if you don't expect it, use this.
firebaseEmulatorHost?: string
(optional)
You can specify a host for the Firebase Auth emulator. This config is mainly used when Service Worker Syntax is used.
If not specified, check the FIREBASE_AUTH_EMULATOR_HOST
environment variable obtained from the request.
Author
codehex https://github.com/Code-Hex
License
MIT
Contribution
If you are interested, send me PR would be greatly appreciated!
To test this code in your local environment, execute the following command.
$ yarn test-with-emulator