Skip to main content

401 Unauthorized vs 403 Forbidden

In web development, ensuring access control is essential in safely and efficiently managing APIs. The meanings of 401 Unauthorized and 403 Forbidden are sometimes confused. Nonetheless, both codes have to do with restricted resources, but they serve different purposes. In this article, we will explain the codes and instruct you on which one to use.

401 Unauthorized?

The response code for a request lacking valid authentication credentials from a client is referred to as the 401 Unauthorized status code. That being said, it means that before accessing the requested resource, it’s necessary for the server to authenticate itself to the client. If no credentials are provided or if wrong ones are given by the client, then what follows is a 401 status code.

When to Use 401 Unauthorized

Use 401 Unauthorized when:

  • No authentication details have been received yet from the client.
  • The authentication information supplied – username and password/token – is not valid/has expired.
  • There is no authorization header present in your requests like “Authorization.”

For instance, if an API demands Bearer token for access but this token has not been included in any request or is incorrect it will issue back a response having HTTP-code of Unauthorized (the most common case).

403 Forbidden?

The reason for using a 403 Forbidden status code when the server recognizes the request, the client has been authenticated, but the client does not have permission to access the requested resource. It means that in this case, a client is known while a server intentionally turns down fulfilling his or her request because of inadequate privileges.

When to Use 403 Forbidden

Use 403 Forbidden when:

  • Authenticated clientele lack sufficient permissions to reach given resources. • Server denies resource access irrespective of client’s authentication state. • Client’s access to resources is prohibited by any form of an access control system.

For instance, an authorized user may try accessing an admin only page without having adequate role. Even if one gets logged in and receive a response like ‘forbidden’ but still he/she does not have enough rights.

401 vs 403

Aspect401 Unauthorized403 Forbidden
Purpose401 indicates missing or invalid authentication.403 indicates lack of permission despite valid authentication.
When should server send this?When the client needs to provide valid credentials.When the client is authenticated but not authorized to access the resource.
What should the client do on receiving this?The client should provide or correct authentication details.The client should not retry, as access is denied.
ExampleAccessing a resource without a valid API token.Accessing a restricted admin area without sufficient privileges.

With the correct usage of 401 Unauthorized and 403 Forbidden status codes, you can make sure to avoid unwanted integration support tickets. The message clearly informs the clients on why they cannot gain access.

By correctly using 401 Unauthorized and 403 Forbidden status codes, you can ensure that your API communicates access issues clearly and helps clients understand the nature of the problem.