Ziro2Mach dream it... build it!


Firebase Auth | Understanding The Auth

🗓️


NOTE: This blog post assumes that you are at-least familiar with setting up firebase SDK If you don’t I’d recommend reading my blog on firebase firestore first

If you’ve built an application, you’ve probably had to deal with authentication and authorization

Contrary to Popular Belief authentication !== authorization

Difference Between Authentication and Authorization

Consider A School School

The School has a Principal Principal He Decides

  1. If a Student Joins the School
  2. If a Student Gets Debarred
  3. If a Student Gets Promoted (Despite Failing Tests)
  4. If a Student Gets Demoted …

The School also has a Security Guard Security He Decides

  1. If/When a Person can Enter the Campus
  2. If/When a Person can Leave the Campus …

Now as an Analogy Authentication: Principal Authorization: Security Guard

Authentication

What is Authentication

The Process of Verifying the Identity of a User

Steps in Authentication

  1. Creating An Account
  2. Verifying An Account Email Address
  3. Login/Sign-In
  4. Password Recovery
  5. Sign Out

Firebase Authentication

1. Creating An Account

firebase.auth().createUserWithEmailAndPassword(
  email,
  password
);

NOTE: You Receive a Promise from any Function from Firebase

2. SignOut

firebase.auth().signOut()

NOTE: Firebase removes the token stored on the client’s localStorage (indexdb to be precise). It’ll talk about it in detail in Authorization

3. Login

firebase.auth().signInWithEmailAndPassword(
  email,
  password
)

4. Verifying An Account Email

// sends a pre-templated message to a specified email address
firebase.auth().sendEmailVerification(
  email,
);

5. Password Recovery

firebase.auth().sendPasswordResetEmail(
  email
);

Authorization

What is Authorization

The Process of Controlling Access to an Asset

How Does Firebase Authorize

  1. When Ever A User’s Auth State Changes
  2. It Updates A User Token

    Very Similar To JWT but not restricted to web application

  3. It Stores the Token in the browser’s indexDB (and not in the cookies) so it has a more controllable timeline
  4. If A Valid User Token is Present, A User is allowed to Access the Resource

Accessing User Token / Checking Auth State

firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    // User is signed in, see docs for a list of available properties
    // https://firebase.google.com/docs/reference/js/firebase.User
    var uid = user.uid;
  }
});

untill next time !️ ✌

or you could spot me in the wild 🤭 i mean instagram, twitter, linkedin and maybe even youtube where i excalidraw those diagrams