@enkeldigital/firebase-authentication
v1.1.0
Published
Library to create Express JS authentication and authorization middlewares
Downloads
2
Maintainers
Readme
@enkeldigital/firebase-authentication
Plugin to use with this library to integrate with firebase authentication.
Installation
npm install @enkeldigital/firebase-authentication
# Depends on this too
npm install create-express-auth-middleware
Example
View samples folder for more specific examples
Make a API call from client using this example to include an Authorization header
Authorization: Bearer <your-client-token>
If an API call is made with a valid token, you can access the decoded token object from request
const app = require("express")(); const { create_authn_middleware, create_authz_middleware } = require("create-express-auth-middleware"); const firebaseAuthentication = require("@enkeldigital/firebase-authentication"); const { auth } = require("@enkeldigital/firebase-admin"); // Make all routes in this express app to be authentication protected. // Meaning all routes defined later can only be called if a valid JWT is provided. // This DOES NOT mean that routes are fully protected yet, // as you need to ensure users have sufficient permission to access APIs using authorization middleware. app.use(create_authn_middleware(firebaseAuthentication(auth))); // The actual route that requires both authentication and authorization to run. app.get( "/data/:userID", // Add authorization middleware to ensure users can only access their own data // Checks that the specified userID in the URL matches user's own userID value in their 'DecodedIdToken' // The 'jwt' property is set by the authentication middleware that is registered above create_authz_middleware((req) => req.jwt.userID === req.params.userID), // This request handler will only run if both predicate above returns true! (req, res) => res.status(200).json({ data: "Protected user data" }) );
If authentication failed, you get a 401 code with the following response by default
{ "ok": false, "error": "Authentication Failed" }
If authorization failed, you get a 403 code with the following response by default
{ "ok": false, "error": "Authorization Failed" }
License and Author
This project is made available under MIT LICENSE and written by JJ