<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Sahil Ghanwat</title>
    <description>The latest articles on Forem by Sahil Ghanwat (@sahilghanwatdev).</description>
    <link>https://forem.com/sahilghanwatdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F989406%2F7c92d665-ac37-4e3b-be42-191050dfa22e.jpeg</url>
      <title>Forem: Sahil Ghanwat</title>
      <link>https://forem.com/sahilghanwatdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sahilghanwatdev"/>
    <language>en</language>
    <item>
      <title>Securing Your Kubernetes Website with Let's Encrypt and cert-manager</title>
      <dc:creator>Sahil Ghanwat</dc:creator>
      <pubDate>Sun, 19 Jan 2025 21:03:42 +0000</pubDate>
      <link>https://forem.com/sahilghanwatdev/securing-your-kubernetes-website-with-lets-encrypt-and-cert-manager-2p33</link>
      <guid>https://forem.com/sahilghanwatdev/securing-your-kubernetes-website-with-lets-encrypt-and-cert-manager-2p33</guid>
      <description>&lt;h2&gt;
  
  
  Securing Your Kubernetes Website with Let's Encrypt and cert-manager
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsasi09ysbpde1umwu1qb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsasi09ysbpde1umwu1qb.png" alt="cert-manager" width="320" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In today's digital world, security is paramount. For websites, this often means implementing HTTPS (HTTPS) to encrypt communication between the server and the user. Let's Encrypt provides a free and automated way to obtain and renew SSL certificates, and cert-manager simplifies this process within your Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;This guide will walk you through the steps of securing your Kubernetes-deployed website with Let's Encrypt certificates using cert-manager.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Install cert-manager&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Install Helm:&lt;/strong&gt; If you're using Helm, install it on your Kubernetes cluster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install cert-manager:&lt;/strong&gt; Use Helm to install cert-manager:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   helm &lt;span class="nb"&gt;install &lt;/span&gt;cert-manager jetstack/cert-manager &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;--namespace&lt;/span&gt; cert-manager &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;--create-namespace&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="nv"&gt;installCRDs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Create a ClusterIssuer for Let's Encrypt&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create a ClusterIssuer resource:&lt;/strong&gt; This defines how cert-manager will obtain certificates from Let's Encrypt. Here's an example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;   &lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cert-manager.io/v1&lt;/span&gt;
   &lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ClusterIssuer&lt;/span&gt;
   &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
     &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;letsencrypt-prod&lt;/span&gt;
   &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
     &lt;span class="na"&gt;acme&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
       &lt;span class="na"&gt;server&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://acme-v02.api.letsencrypt.org/directory&lt;/span&gt;
       &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;your_email@example.com&lt;/span&gt; 
       &lt;span class="na"&gt;privateKeySecretRef&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
         &lt;span class="na"&gt;secretName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;letsencrypt-prod&lt;/span&gt;
       &lt;span class="na"&gt;solvers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
       &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;http01&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
           &lt;span class="na"&gt;ingress&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
             &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Replace &lt;code&gt;your_email@example.com&lt;/code&gt; with your email address.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ensure the &lt;code&gt;ingress&lt;/code&gt; class matches your Ingress controller (e.g., &lt;code&gt;nginx&lt;/code&gt;, &lt;code&gt;traefik&lt;/code&gt;).&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Apply the ClusterIssuer:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; letsencrypt-issuer.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Create an Ingress Resource&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create an Ingress resource:&lt;/strong&gt; This defines how traffic should be routed to your application. Here's a basic example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;   &lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking.k8s.io/v1&lt;/span&gt;
   &lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Ingress&lt;/span&gt;
   &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
     &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-app-ingress&lt;/span&gt;
   &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
     &lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
     &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;your-domain.com&lt;/span&gt; 
       &lt;span class="na"&gt;http&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
         &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
         &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/&lt;/span&gt;
           &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
             &lt;span class="na"&gt;serviceName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-app-service&lt;/span&gt; 
             &lt;span class="na"&gt;servicePort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
     &lt;span class="na"&gt;tls&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
     &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
       &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;your-domain.com&lt;/span&gt; 
       &lt;span class="na"&gt;secretName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;your-domain-tls&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Replace &lt;code&gt;your-domain.com&lt;/code&gt; with your actual domain name.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Replace &lt;code&gt;my-app-service&lt;/code&gt; and &lt;code&gt;my-app-service&lt;/code&gt; with the actual names of your Service and its port.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Specify the &lt;code&gt;secretName&lt;/code&gt; that cert-manager will create to store the certificate and key.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Apply the Ingress:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; ingress.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Verify Certificate Issuance&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check the status of the Certificate resource:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   kubectl get certificates 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see a Certificate resource being created by cert-manager. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check the Ingress status:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   kubectl describe ingress my-app-ingress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Ingress status should indicate that the TLS configuration is ready.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Access Your Website&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Browse to your website:&lt;/strong&gt; Visit &lt;code&gt;https://your-domain.com&lt;/code&gt; in your browser. You should now see a secure connection (indicated by the green padlock in the address bar).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Important Notes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DNS Configuration:&lt;/strong&gt; Ensure that your domain name is properly configured to point to your Kubernetes cluster's LoadBalancer IP or Ingress endpoint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ingress Controller:&lt;/strong&gt; This example assumes you are using an Ingress controller like Nginx Ingress. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security:&lt;/strong&gt; Always follow security best practices and regularly review and update your certificates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Troubleshooting:&lt;/strong&gt; If you encounter any issues, check the logs of cert-manager, your Ingress controller, and your Kubernetes cluster for error messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By following these steps, you can effectively secure your Kubernetes-based website with Let's Encrypt certificates using cert-manager. This will enhance the security and trust of your website for your users. &lt;/p&gt;




&lt;p&gt;👨‍💻 About Me:&lt;br&gt;&lt;br&gt;
I'm an aspiring software engineer with a knack for Kubernetes, DevOps, Cloud. I thrive on building efficient systems. I love sharing my tech learnings on LinkedIn and Twitter. Follow me for insights on softwares, cutting-edge technology and many more things. 🚀  &lt;/p&gt;




</description>
      <category>k8s</category>
      <category>ssl</category>
      <category>security</category>
      <category>devops</category>
    </item>
    <item>
      <title>Defining Devops for extreme newbies</title>
      <dc:creator>Sahil Ghanwat</dc:creator>
      <pubDate>Thu, 31 Aug 2023 09:34:13 +0000</pubDate>
      <link>https://forem.com/sahilghanwatdev/defining-devops-for-extreme-newbies-1g96</link>
      <guid>https://forem.com/sahilghanwatdev/defining-devops-for-extreme-newbies-1g96</guid>
      <description>&lt;p&gt;Hey there, fellow tech adventurers! Buckle up, because we're about to dive into a wild ride through the ever-evolving landscape of DevOps in the year 2023. It's a tale of code, chaos, and collaboration that's shaping the tech world like never before. Grab your virtual hard hats, and let's explore how DevOps is both serious business and a barrel of laughs.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The DevOps Disco:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Picture this&lt;/em&gt;: developers grooving alongside operations folks on a neon-lit dance floor, moving to the rhythm of &lt;em&gt;automated deployments&lt;/em&gt;. DevOps has turned software development into a party where continuous integration is the DJ, and continuous delivery is the dance move everyone's trying to nail. Gone are the days of code being thrown over the wall like a hot potato. DevOps brings everyone to the same party, where they can hash out issues, spin up environments, and push code changes without breaking a sweat.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3rzc0eswncg65ezpaau0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3rzc0eswncg65ezpaau0.jpg" alt="Image description" width="597" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Release Roulette - Betting on Success:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Remember the days when releasing new software was like playing Russian roulette? Well, DevOps has turned that game into Release Roulette – a high-stakes game where automation is your lucky charm. With automated testing, deployment pipelines, and monitoring in place, you're less likely to shoot yourself in the foot and more likely to hit the jackpot of a smooth release.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff8t0bt7lixbezh2xehw0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff8t0bt7lixbezh2xehw0.jpg" alt="Image description" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Team Bonding: The Code that Binds:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Collaboration takes center stage in the DevOps saga. Developers and operations teams used to be like rival clans, but now they're more like peanut butter and jelly. Working together, sharing knowledge, and understanding each other's challenges has become the secret sauce for serving up successful software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujm65jjtbgoka1lwbxqa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujm65jjtbgoka1lwbxqa.png" alt="Image description" width="450" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So there you have it, intrepid explorers of tech-land! DevOps isn't just reshaping the way we develop and deploy software—it's reshaping the way we think about teamwork, efficiency, and even the occasional all-nighter. Whether it's dancing to the beat of continuous integration or playing Release Roulette with automated deployment, DevOps is the ultimate party where everyone's invited, and the code is the life of the bash.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fprztee5vrvt22blb3ub8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fprztee5vrvt22blb3ub8.jpg" alt="Image description" width="297" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remember, while we navigate the world of DevOps with a dash of humor, it's a serious game-changer that's propelling the tech world forward in 2023. So, as you balance your sleepless nights with code deployments, take a moment to appreciate the DevOps disco and the camaraderie it brings to our ever-evolving tech adventure!&lt;/p&gt;

</description>
      <category>devops</category>
      <category>beginners</category>
      <category>learning</category>
      <category>career</category>
    </item>
    <item>
      <title>Getting started with Vagrant: a beginner's Guide</title>
      <dc:creator>Sahil Ghanwat</dc:creator>
      <pubDate>Thu, 24 Aug 2023 17:27:26 +0000</pubDate>
      <link>https://forem.com/sahilghanwatdev/getting-started-with-vagrant-a-beginners-guide-51e9</link>
      <guid>https://forem.com/sahilghanwatdev/getting-started-with-vagrant-a-beginners-guide-51e9</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;code&gt;In the fast-evolving landscape of software development, efficient and consistent environments are crucial. The ability to set up, replicate, and share development environments quickly can significantly enhance a developer's productivity. This is where Vagrant, a tool developed by HashiCorp, comes into play. In this beginner's guide, we will explore the fundamental concepts of Vagrant and learn how to get started with creating and managing development environments.&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsirpokvxexjmd5ddmjhq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsirpokvxexjmd5ddmjhq.png" alt="Image description" width="788" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;code&gt;What is Vagrant?&lt;/code&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Vagrant is an open-source tool that focuses on automating the creation and management of virtualized development environments. It provides a simple and consistent way to set up virtual machines (VMs) with a specific configuration. Vagrant abstracts away the complexities of setting up and configuring VMs, making it easier for developers to collaborate and work in controlled environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;code&gt;Why Use Vagrant?&lt;/code&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;🎢&lt;strong&gt;Reproducibility&lt;/strong&gt;: With Vagrant, you can define your development environment as code. This means that anyone, regardless of their operating system, can reproduce your environment with a single command.&lt;/p&gt;

&lt;p&gt;👓&lt;strong&gt;Isolation&lt;/strong&gt;: Vagrant allows you to isolate your development environment from your host machine. This isolation prevents conflicts between software versions and configurations, ensuring that your projects run consistently across different systems.&lt;/p&gt;

&lt;p&gt;🤝&lt;strong&gt;Collaboration&lt;/strong&gt;: Vagrant makes it easy to share the exact same development environment with your team members. This eliminates the "it works on my machine" issue and fosters collaboration.&lt;/p&gt;

&lt;p&gt;💪&lt;strong&gt;Flexibility&lt;/strong&gt;: Vagrant supports various virtualization providers, such as VirtualBox, VMware, and Hyper-V, giving you the flexibility to choose the platform that suits your needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;code&gt;Getting Started with Vagrant!&lt;/code&gt;&lt;/strong&gt;🎐
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Installation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;To begin using Vagrant, you'll need to install it on your machine. Visit the official Vagrant website and download the installer for your operating system. Once installed, you can verify the installation by opening a terminal or command prompt and running:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vagrant --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Initializing a Vagrant Environment:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Create a new directory for your project and navigate to it using the terminal.&lt;br&gt;
Run the following command to initialize a new Vagrant environment:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vagrant init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This command creates a Vagrantfile in your project directory. The Vagrantfile is where you define the configuration of your VM.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Configuring the Vagrant Environment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Open the Vagrantfile in a text editor and configure the VM according to your needs. You can specify the base box, configure networking, set up port forwarding, and more. Here's an example of a basic Vagrantfile configuration:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;In this example, we're using the "ubuntu/bionic64" box as the base.&lt;br&gt;
OR you can download the box by simply skipping step 2 &amp;amp; step 3 by writing the following command:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Vagrant init ubuntu/bionic64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Thank me later!😋&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Starting and Accessing the VM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Save the Vagrantfile after making your desired configurations.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;in case you skipped step 2 &amp;amp;&amp;amp; step 3 you already are in the working directory. In the terminal, navigate to your project directory and run:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vagrant up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This command will download the specified base box if it's not already downloaded and start the VM.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once the VM is up and running, you can access it using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vagrant ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This will open a secure shell (SSH) connection to the VM.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Managing the VM&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;To pause the VM, use:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vagrant suspend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;To halt (shut down) the VM, use:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vagrant halt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;To completely remove the VM, use:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vagrant destroy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Remember that you can always bring the VM back up with:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vagrant up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;&lt;code&gt;Conclusion:&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Vagrant simplifies the process of managing development environments, making it an essential tool for modern software development. By automating the setup and configuration of VMs, Vagrant boosts productivity, collaboration, and consistency across development teams. As you delve deeper into Vagrant, you'll discover its advanced features and integrations with other HashiCorp tools, enabling you to create even more powerful development workflows. Happy coding!😎&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>hashicorp</category>
      <category>vagrant</category>
      <category>virtualmachine</category>
      <category>virtualbox</category>
    </item>
    <item>
      <title>Is CentOS still relevant today?</title>
      <dc:creator>Sahil Ghanwat</dc:creator>
      <pubDate>Mon, 21 Aug 2023 18:03:48 +0000</pubDate>
      <link>https://forem.com/sahilghanwatdev/exploring-the-popularity-of-centos-among-developers-35bh</link>
      <guid>https://forem.com/sahilghanwatdev/exploring-the-popularity-of-centos-among-developers-35bh</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;In the ever-evolving landscape of operating systems, &lt;em&gt;CentOS&lt;/em&gt; stands as a stalwart favorite among developers worldwide. Renowned for its &lt;u&gt;stability&lt;/u&gt;, &lt;u&gt;security&lt;/u&gt;, and &lt;u&gt;open-source nature&lt;/u&gt;, &lt;strong&gt;CentOS&lt;/strong&gt; has earned its place as a go-to choice for both beginner and experienced developers alike. In this blog post, we delve into the reasons behind CentOS's enduring popularity in the &lt;strong&gt;developer&lt;/strong&gt; &lt;strong&gt;community&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  - &lt;strong&gt;Open Source Foundation:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhx7vtwxq0ys4tuz9e309.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhx7vtwxq0ys4tuz9e309.jpg" alt="open source foundation png" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
CentOS is built upon the source code of the Red Hat Enterprise Linux (RHEL) distribution, which is one of the most respected and widely used commercial Linux distributions. CentOS follows a strict policy of adhering to the open-source philosophy, making it an ideal choice for developers who prioritize transparency and the ability to modify and contribute to the operating system's source code.&lt;/p&gt;

&lt;h2&gt;
  
  
  - &lt;strong&gt;Stability and Long-Term Support:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;One of the primary reasons developers are drawn to &lt;strong&gt;CentOS&lt;/strong&gt; is its renowned stability and long-term support. CentOS releases are known for their &lt;strong&gt;reliability&lt;/strong&gt; and &lt;strong&gt;robustness&lt;/strong&gt;, making them suitable for critical &lt;em&gt;server deployments&lt;/em&gt; and &lt;em&gt;production environments&lt;/em&gt;. This stability translates to fewer disruptions and a reduced need for frequent updates, which is highly appealing to developers focused on maintaining consistent and reliable systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  - &lt;strong&gt;Security Focus:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl0xo55qvgqwozirmxc8k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl0xo55qvgqwozirmxc8k.jpg" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Security is a paramount concern for developers, and CentOS doesn't disappoint in this area. The CentOS team is proactive in addressing security vulnerabilities and providing timely security updates, ensuring that the operating system remains robust against emerging threats. This commitment to security makes CentOS a trusted choice for applications and services that require a secure foundation.&lt;/p&gt;

&lt;h2&gt;
  
  
  - &lt;strong&gt;Active Community and Support:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;CentOS boasts a vibrant and active user community that contributes to its popularity. Developers can easily find solutions to problems, seek guidance, and participate in discussions on forums, mailing lists, and other online platforms. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fui5t2cfhnnhhfbilbl1e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fui5t2cfhnnhhfbilbl1e.jpg" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This strong community support network facilitates learning, troubleshooting, and collaboration among developers, making CentOS an excellent choice for those who value a sense of belonging to a larger community.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  - &lt;strong&gt;Variety of Software Repositories:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;CentOS provides access to a broad range of software packages through its repositories. This expansive software ecosystem includes development tools, programming languages, libraries, and frameworks. _Developers can quickly set up their development environments and access the tools they need without the hassle of hunting down dependencies from various sources.&lt;/p&gt;

&lt;h2&gt;
  
  
  - &lt;strong&gt;Ease of Migration:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;For developers migrating from other Linux distributions, CentOS provides a relatively smooth transition due to its similarity to RHEL and its adherence to widely accepted Linux conventions.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This familiarity streamlines the adaptation process, enabling developers to focus on their projects without grappling with significant changes to their workflows.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  - &lt;strong&gt;Customizability:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp7se9uijn6pggqiaomiw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp7se9uijn6pggqiaomiw.jpg" alt="Image description" width="640" height="427"&gt;&lt;/a&gt;&lt;br&gt;
CentOS offers developers the flexibility to customize their installations to suit specific project requirements. This customizability extends to the kernel and other components, allowing developers to fine-tune their environments for optimal performance and resource utilization.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;These factors collectively make CentOS an appealing choice for developers seeking a reliable, secure, and versatile operating system to support their projects and initiatives. Whether you're a seasoned developer or just starting your coding journey, CentOS offers a solid platform that empowers you to bring your ideas to life with confidence.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;but&lt;/strong&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  is it still relevant today?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;CentOS Project shifted its focus from CentOS Linux, which was a downstream, community-supported version of Red Hat Enterprise Linux (RHEL), to CentOS Stream, which is an upstream development platform for RHEL.&lt;br&gt;
CentOS Stream is designed to provide a rolling-release distribution that helps to develop and test features before they make their way into RHEL. This change led to concerns among users who preferred CentOS Linux for its stability and predictability.&lt;br&gt;
However, the discontinuation of CentOS Linux has caused a significant amount of discussion and debate within the community. It's recommended that you check the official CentOS website or other reputable sources for the most up-to-date information regarding the status of CentOS Linux and CentOS Stream, as developments might have occurred after September 2021.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>linux</category>
      <category>virtualmachine</category>
      <category>devops</category>
      <category>security</category>
    </item>
    <item>
      <title>JWT authentication explained in simplest way possible ✌️</title>
      <dc:creator>Sahil Ghanwat</dc:creator>
      <pubDate>Mon, 06 Mar 2023 18:58:44 +0000</pubDate>
      <link>https://forem.com/sahilghanwatdev/jwt-authentication-explained-in-simplest-way-possible-29j9</link>
      <guid>https://forem.com/sahilghanwatdev/jwt-authentication-explained-in-simplest-way-possible-29j9</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feaf9b4tw8sp129tissr0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feaf9b4tw8sp129tissr0.png" alt="Image description" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  JWT Overview: -
&lt;/h2&gt;

&lt;p&gt;If you know what are &lt;strong&gt;JSON&lt;/strong&gt; &lt;strong&gt;Web&lt;/strong&gt; &lt;strong&gt;Tokens&lt;/strong&gt;, you might wonder how they actually work.🤔️&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JSON&lt;/strong&gt; &lt;strong&gt;Web&lt;/strong&gt; &lt;strong&gt;Token&lt;/strong&gt; is a proposed Internet standard for creating data with optional signature and/or optional encryption whose payload holds JSON that asserts some number of claims.&lt;/p&gt;

&lt;p&gt;☺️ In simple English- Token-based authentication is a protocol that allows users to confirm their identity and obtain a unique access token in return. Users do not need to re-enter their credentials when they go back to the same web page, app, or any resource protected with that same Token's life&lt;/p&gt;

&lt;p&gt;It might be hard for beginners to understand at first glance.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;For now just understand, JSON Web Tokens are used while User authentication.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works?
&lt;/h2&gt;

&lt;p&gt;Lets divide the whole process in 4 steps👇️&lt;/p&gt;

&lt;p&gt;👉️ INITIAL REQUEST: - A user tries to access a restricted resource. The user must initially verify their identity without the use of a token, for as by using a username or password.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj9jk3awrxhnxgd233wl0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj9jk3awrxhnxgd233wl0.jpg" alt="Image description" width="800" height="697"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉️ VERIFICATION: - If the user's credentials are valid, the authentication server verifies their rights on the requested system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgjslv73ilqrnlhc8ttt9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgjslv73ilqrnlhc8ttt9.jpg" alt="Image description" width="740" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉️ TOKEN: - After verification, the server delivers a TOKEN to the user that contains a REFERENCE to their identity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4l7h87txatbf6ad1r1yx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4l7h87txatbf6ad1r1yx.jpg" alt="Image description" width="530" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉️ STORAGE: - The token is kept by the users either in the browser or on their mobile devices. They can now authenticate in the future without having to use their credentials.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbvdpcio25e4fm47burm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbvdpcio25e4fm47burm.jpg" alt="Image description" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why use JWT?🤷️
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;🤞️ Advantages of using JWTs include the following:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉️ They are lightweight and easy to use by client applications: for example, mobile applications.&lt;br&gt;
👉️ They are self-contained, which means that the Liberty JVM server can consume the token directly and use a claim from the token as the identity for running the request.&lt;br&gt;
👉️ They can be symmetrically signed by a shared secret by using the HMAC algorithm, or asymmetrically by using a private key.&lt;br&gt;
👉️ They have a built-in expiry mechanism.&lt;br&gt;
👉️ They can be extended to contain custom claims.&lt;/p&gt;




&lt;h2&gt;
  
  
  Anatomy of JWT: -
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fusxd4sp0ieg9k9h4cehj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fusxd4sp0ieg9k9h4cehj.jpg" alt="Image description" width="683" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A JWT consists of three parts: a &lt;strong&gt;header,&lt;/strong&gt; &lt;strong&gt;payload,&lt;/strong&gt; and &lt;strong&gt;signature.&lt;/strong&gt; The header typically consists of two parts: the type of the token, which is JWT, and the algorithm that is used, such as &lt;u&gt;HMAC SHA256&lt;/u&gt; or &lt;u&gt;RSA SHA256&lt;/u&gt;. It is Base64Url encoded to form the first part of the JWT.&lt;/p&gt;




&lt;h2&gt;
  
  
  JWT Authentication Flow.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdyqb1799b377gk64dx6d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdyqb1799b377gk64dx6d.jpg" alt="Image description" width="572" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The user logs in using their credentials.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When the user is authenticated, a JWT is returned.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When the user wants to access a protected resource, the client application sends the JWT, typically in the HTTP Authorization header.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The JWT is then used by the application server, such as CICS, to identify the user and allow access to the resource.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Conclusion: -&lt;br&gt;
Its easy to understand particular concept if they are taught better.&lt;br&gt;
Comment your thoughts.&lt;br&gt;
Subscribe for more upcoming tech blogs.. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
