Unveiling the World of Basic Authentication. Your Comprehensive Guide

Myra Jarenga
OSINT for all
Published in
4 min readAug 10, 2023

Introduction.

Welcome to the world where web development and security meet! In this ever-changing landscape, understanding authentication mechanisms is like having the keys to a secure kingdom. One such key is “Basic Authentication,” a simple yet powerful way to safeguard your web applications and APIs. In this guide, I will be helping you understand the basics of authentication, unravel the mystery of Base64 encoding, demystify Basic Authentication, and even show you how to send credentials using Python. If you are a developer fasten up your seatbelt so that we can unveil this together. If not and you really want to understand how we do authentication in developing safe and secure systems keep reading to learn more.

The Essence of Authentication

Imagine you’re at a fancy event, and a bouncer stands at the entrance, checking invitations. This “entrance check” is what authentication is in the digital realm. It’s about making sure only the right people get access to the right things. Now, let me introduce you to “Basic Authentication.” It’s like that special wristband you wear to access the VIP area.

Cracking the Code. Base64 Encoding

Before we dive into Basic Authentication, let’s tackle a tiny puzzle called Base64 encoding. Think of it as translating secret messages into a language everyone understands. This language is safe for messages to travel across the internet. It’s not a lock, but more like an envelope that keeps your message private.

Here’s an example using Python. If you don't know how python programming language works you can check on this site here Welcome to Python.org in order to be able to understand this code.

import base64

message = "Hello, World!"
encoded_message = base64.b64encode(message.encode('utf-8'))
print(encoded_message.decode('utf-8'))

So Basic Authentication it’s like a secret handshake between you and a website. When you want to access something secure, you send your username and password in a special code to prove you’re allowed in. The website then decodes this code and checks if your credentials match.

Using the Secret Code. Authorization Header

For us to use Basic Authentication, we add something called an “Authorization” header to your request. Think of it as a secret note attached to your message. This note includes your username and password, but in a language only the website can understand. Here’s how you do it using Python’s requests library.

import requests
import base64

username = "your_username"
password = "your_password"

credentials = f"{username}:{password}"
encoded_credentials = base64.b64encode(credentials.encode('utf-8')).decode('utf-8')

headers = {"Authorization": f"Basic {encoded_credentials}"}
response = requests.get("https://api.example.com/resource", headers=headers)

print(response.status_code)
print(response.text)

This code snippet is like a script that helps your computer talk securely to a website. Imagine you want to enter a special online room, and there’s a secret door that requires a special handshake or the bouncer we talked about earlier at the entrance. This script creates that handshake for you.

  1. First, it prepares to communicate with the website by importing some tools. Imagine getting your tools ready before starting a task. Importing libraries.
  2. Then, you fill in your username and password in the provided spots. It’s like giving your name and a secret code to the doorkeeper.
  3. Your username and password are combined into something called “credentials.” Think of it as a secret message with your name and code.
  4. Next, this message is turned into a secret code that the website can understand. It’s like translating your message into a secret language that only the website can read.
  5. A special “Authorization” note is created. It’s like having a VIP pass to show the doorkeeper.
  6. Finally, using your special note and the secret code, your computer asks the website to open the door. It’s like using your pass and secret handshake to get inside.
  7. The response from the website is checked. If it’s successful, your computer knows the door was opened, and you can access the special room.
  8. The script then shows you the response code (a number that tells you if things went well) and any messages from the website. It’s like getting a thumbs-up or thumbs-down after your secret handshake.

Empowering Your Online Security

In today’s digital world, understanding authentication is like having a superpower. Basic Authentication is your trusty sidekick in this journey. By grasping Base64 encoding and mastering the Authorization header, you’re ready to keep your online experiences secure.

I am using the same concept to implementing basic authentication if a flask app I am developing and now I understand better why we need security in development. If you are a developer this will be very useful in helping you make secure systems and websites for your users. In my next article I will be writing on session authentication in order for you to learn more about authentication.

Remember, security is like teamwork. Regularly update your techniques, just as you would keep your secret handshake fresh. With this newfound knowledge, you’re not just a user; you’re a guardian of digital realms. Keep exploring, keep questioning, and enjoy crafting safe digital paths for yourself and others. You’re the future of secure online adventures!

Below are references to the resources that helped me in understanding this concepts. If you would like to connect with me you can do so on LinkedIn Myra Jarenga, you can also send me a DM on Twitter @myrajarenga for us to chat more on this topic. You can support me by following me on this blog. Thank you.

Reffernces

base64 — Base16, Base32, Base64, Base85 Data Encodings — Python 3.7.17 documentation

Authorization — HTTP | MDN (mozilla.org)

Flask | The Pallets Projects

Base64 — Wikipedia

--

--

Myra Jarenga
OSINT for all

A Cybersecurity analyst with customer service experience and AI expert.