Authorization vs Authentication
Published: 2022-10-25 13:12:54

# Overview
When you are starting out in web development, you will likely hear the terms authorization and authentication all the time. They might sound similar but they are totally different from each other. In Simple words, Authentication is the process of verifying someone's identity, whereas Authorization is the way to provide permission to someone to access particular resources or information. 

They are essential and basic security terms that need to be understood thoroughly. So In this blog, We will discuss what authentication and authorization are and how they are differentiated from each other.


Ok, Let's get started!

![Let'SGetStartedGIF.gif](https://cdn.hashnode.com/res/hashnode/image/upload/v1665383032526/O-Lq0gCtD.gif)

# What is Authentication?

![authentication.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1665423399345/RiRO4QCNs.png)

Authentication is the process of identifying or verifying someone's identity by assuring that the person is the same as what he is claiming for. It is used by both clients and servers. The server uses authentication when someone wants to access the information, and the server needs to know who is accessing the data. The client uses it when he wants to know that it is the same server that it claims to be.

Authentication by the server is done mostly by using the username and password. Other ways of authentication by the server can also be done using cards, retina scans, voice recognition, and fingerprints. Authentication does not ensure what tasks one person can do, and what resources he can read and write. It only identifies who the person or system is actually.

## Methods of Authentication

### Single-factor Authentication

Single-factor authentication is the simplest way of authentication. It just needs a username and password to allow a user to access a system. So, It is less secure and mainly used by beginner developers to develop their side projects.

### Two-factor Authentication

As the name suggests, It is a two-level authentication where the user needs to pass two-step verification to authenticate. It does not require only user name or password but also needs certain information that the authenticated user only knows such as birth date, favorite food, school name, and other information. Apart from this, it can also verify the user by sending the OTP or a unique link to the user's registered number or email address.

### Multi-factor Authentication

This is the most secure and advanced level of authorization. It requires two or more than two levels of security from different and independent categories. This type of authentication is usually used in financial organizations, banks, and law enforcement agencies. This type of authentication protects the system from data miners or hackers.

## Authentication techniques

### 1. Password-based authentication

It is the simplest way of authentication. It requires the password for the particular username. If the password matches the username and both details match the system's database, the user will be successfully authenticated.

### 2. Passwordless authentication

In this technique, the user doesn't need any password; instead, he gets a unique OTP (One-time password) or link on his registered mobile number or phone number. It can also be said OTP-based authentication. It is used to enhance the user experience on the system.

### 3. Single Sign-on(SSO)

Single Sign-on or SSO is a way to enable access to multiple applications with a single set of credentials. It allows the user to sign in once, and it will automatically be signed in to all other web apps from the same centralized directory.

### 4. Social Authentication

Social authentication does not require additional security; instead, it verifies the user with the existing credentials for the available social network. It is mainly used authentication which is more secure and does not affect the user experience. Users can authenticate with one click. Mainly used and popular social media credentials(not passwords) are used for this type of authentication.


# What is Authorization?

![authorization.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1665423436444/fI36jeIql.png)

Authorization is the process of verifying that you're allowed to access an area of an application or perform specific actions, based on certain criteria and conditions put in place by the application. You may also hear it called access control or privilege control.
The authorization usually works with authentication so that the system could know who is accessing the information.

Authorization is not always necessary to access information available over the internet. Some data available over the internet can be accessed without any authorization, such as you can read blogs from [here](https://blog.utsavbhattarai.info.np/).

## Authorization techniques

### 1. Role-based access control

The role-based access control technique is given to users as per their role or profile in the organization. It can be implemented for system-system or user-to-system. It ensures the users on the basis of their roles or profile for accessing the particular area or resources of the system.

### 2. JSON web token

JSON web token or JWT is an open standard used to securely transmit the data between the parties in the form of the JSON object. The users are verified and authorized using the private/public key pair. It is used to access and refresh tokens to authorize the user to access the resources. 

### 3. OAuth

OAuth is an authorization protocol, which enables the API to authenticate and access the requested resources.

### 4. OpenID authorization

It helps the clients to verify the identity of end-users on the basis of authentication.

### 5. SAML

SAML stands for Security Assertion Markup Language. It is an open standard that provides authorization credentials to service providers. These credentials are exchanged through digitally signed XML documents.


# Differences between Authentication and Authorization

| Authentication                                                                                                                                |                                                                          Authorization                                                                         |
|-----------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| 1. Authentication is the process of identifying a user to provide access to a system.                                                         | 1. Authorization is the process of giving permission to access the resources.                                                                                  |
| 2. It is usually performed before the authorization.                                                                                          | 2. It is usually done once the user is successfully authenticated.                                                                                             |
| 3. It requires the login details of the user, such as user name & password, etc.                                                              | 3. It requires the user's privilege or security level.                                                                                                         |
| 4. Authentication credentials can be partially changed by the user as per the requirement.                                                    | 4. Authorization The permissions are given to a user by the owner/manager of the system, and he can only change it, User can't change.|
| 5. **Example**: Entering Login details is necessary for the employees to authenticate themselves to access the organizational emails or software. | 5. **Example**: After employees successfully authenticate themselves, they can access and work on certain functions only as per their roles and profiles.          |

>Comparing these processes to a real-world example, when you go through security in an airport, you show your ID to authenticate your identity. Then, when you arrive at the gate, you present your boarding pass to the flight attendant, so they can authorize you to board your flight and allow access to the plane.

# Why Should You Implement Both Authentication and Authorization?

As you can see, although authentication and authorization are very different, each plays an integral part in the security and integrity of the application or system.

These processes go hand in hand, and without one the other is kind of meaningless. If you can gain access to the Admin area, but do whatever you want once in there, it could lead to big problems.

On the other hand, you can't authorize individuals without knowing who they are! Which is why authentication always comes before authorization.


# Conclusion

As we discussed above, we can say Authentication verifies the user's identity, and Authorization verifies the user's access and permissions. If the user can't prove their identity, they cannot access the system. And if you are authenticated by proving the correct identity, but you are not authorized to perform a specific function, you won't be able to access that. However, both security methods are often used together.

I hope this blog has been insightful and You have now a clearer view and understanding of this term.

Feel free to get in touch via social media.
You can mostly find me at 👉 [@utsavbhatrai007](https://twitter.com/utsavbhatrai007)

Thanks for reading🔥

Just a minute👇
```js
if( Do you like the blog🤩? ) {
   console.log("Don't forget to give reactions and your views in the comments😉")
}
else{
   console.log("Thanks for reading💖")
}

```