<?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: Evgeny</title>
    <description>The latest articles on Forem by Evgeny (@evgenyk).</description>
    <link>https://forem.com/evgenyk</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%2F3270%2F362ece54-20fd-4aca-b24f-9fa9080226fa.jpg</url>
      <title>Forem: Evgeny</title>
      <link>https://forem.com/evgenyk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/evgenyk"/>
    <language>en</language>
    <item>
      <title>The deceptive simplicity of auth</title>
      <dc:creator>Evgeny</dc:creator>
      <pubDate>Tue, 19 Aug 2025 05:28:40 +0000</pubDate>
      <link>https://forem.com/evgenyk/the-deceptive-simplicity-of-auth-4nnn</link>
      <guid>https://forem.com/evgenyk/the-deceptive-simplicity-of-auth-4nnn</guid>
      <description>&lt;h2&gt;
  
  
  Decoding ‘auth’: Why authentication v authorization matters more than you think
&lt;/h2&gt;

&lt;p&gt;You saw the title, right? Just using the term “auth” is the first trap we fall into. It feels simple, shorter and techy. But what does it  &lt;em&gt;really&lt;/em&gt;  mean? Authentication? Authorization? Either or both?&lt;/p&gt;

&lt;p&gt;That’s the crux of it. We’ve simplified terms to the point where things are muddled. “Auth” becomes a catch-all, and suddenly we see ID tokens (meant for  &lt;em&gt;who you are&lt;/em&gt;) being used for authorization (&lt;em&gt;what you can do&lt;/em&gt;), and access tokens (meant for  &lt;em&gt;what you can do&lt;/em&gt;) being misused for authentication (&lt;em&gt;who you are&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;It’s messy. Even major, established platforms have to build in flexibility for these real-world inconsistencies. And that’s just scratching the surface.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here’s a quick “auth” refresher
&lt;/h3&gt;

&lt;p&gt;It’s crucial we stay clear on the fundamentals:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Authentication (Authn):&lt;/strong&gt;  This is all about  &lt;strong&gt;identity&lt;/strong&gt;. It answers the question:  &lt;em&gt;Who is this person or system?&lt;/em&gt;  In the world of OAuth2 and OIDC, this is typically represented by the  &lt;strong&gt;ID Token&lt;/strong&gt;. It contains verifiable information about the user’s identity.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Authorization (Authz):&lt;/strong&gt;  This is all about  &lt;strong&gt;permissions&lt;/strong&gt;. It answers the question:  &lt;em&gt;What is this person or system allowed to do?&lt;/em&gt;  In OAuth2 terms, this is generally handled by the  &lt;strong&gt;Access Token&lt;/strong&gt;. It grants specific permissions (scopes) to access certain resources or perform actions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Services like  &lt;a href="https://auth0.com/" rel="noopener noreferrer"&gt;Auth0&lt;/a&gt;,  &lt;a href="https://kinde.com/" rel="noopener noreferrer"&gt;Kinde&lt;/a&gt;, &lt;a href="https://workos.com/" rel="noopener noreferrer"&gt;WorkOS&lt;/a&gt;  (and other identity platforms) are fantastic at handling the authentication piece, verifying your users and issuing these tokens. They can also provide information about user roles or permissions to help with authorization. They give you the tokens and the tools.&lt;/p&gt;

&lt;p&gt;But — and this is key —  &lt;strong&gt;enforcing&lt;/strong&gt;  those rules within  &lt;em&gt;your&lt;/em&gt;  product? That’s still on you. It’s your application, your security domain, and rightly so. No external provider should dictate exactly how you secure every endpoint or feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  When you don’t know what you don’t know, it’s risky
&lt;/h3&gt;

&lt;p&gt;We’ve all heard “there’s no free lunch,” and it definitely applies here. Open source software is one of the modern miracles of our industry. The ability to potentially self-host powerful, world-class authentication solutions using OSS platforms and databases is incredible. We should be immensely proud of that collaborative achievement.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But…&lt;/em&gt;  (there’s always a but, isn’t there?)&lt;/p&gt;

&lt;p&gt;If authentication and authorization were simple problems to solve and maintain, with readily available open-source components, why is the market flooded with dedicated auth providers? Why do companies, large and small, still choose to pay for these services?&lt;/p&gt;

&lt;p&gt;The reality is, while the concepts might seem straightforward, it’s not. Implementation, maintenance, security patching, scaling, keeping up with evolving standards (OAuth 2.1, Passkeys, etc.), and handling edge cases are complex, time-consuming, and carry significant risk if done incorrectly.&lt;/p&gt;

&lt;p&gt;What is obvious to someone deep in the security field is a minefield for those looking to build it themselves alongside their core product.&lt;/p&gt;

&lt;h3&gt;
  
  
  Choosing your battles (or choosing your regrets)
&lt;/h3&gt;

&lt;p&gt;There’s rarely a single “perfect” solution when it comes to complex systems like authentication and authorization. Every approach has trade-offs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Self-hosting OSS:&lt;/strong&gt;  Amazing flexibility, potential cost savings (in licensing), but requires deep expertise, ongoing maintenance, security vigilance, and resource investment.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Using a managed service:&lt;/strong&gt;  Offloads complexity, maintenance, and often provides faster access to new features and compliance, but involves vendor lock-in, subscription costs, and trusting a third party.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are speed bumps down both roads. So it’s less about finding the flawless option and more about understanding the different challenges each path presents. Ask yourself: What problems am I most equipped to handle? Which downsides am I willing to live with?&lt;/p&gt;

&lt;p&gt;There’s an old saying: you don’t just run towards the cheese; you also want to run away from the cat. In other words, you’re not just chasing the best solution, you’re also avoiding the most negative outcome.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is there a perfect system?
&lt;/h3&gt;

&lt;p&gt;Maybe the goal isn’t some feature-packed behemoth, or some bespoke minimalist model. Maybe perfection is closer to Antoine de Saint-Exupéry’s definition:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Perhaps the “perfect” auth system is the one that securely and reliably does exactly what you need it to do, with the least complexity and burden  &lt;em&gt;for your specific situation&lt;/em&gt;. Finding that balance now, while leaving room to scale, is the real challenge.&lt;/p&gt;

</description>
      <category>security</category>
      <category>authentication</category>
      <category>authorization</category>
      <category>beginners</category>
    </item>
    <item>
      <title>A mythical full stack developer</title>
      <dc:creator>Evgeny</dc:creator>
      <pubDate>Fri, 03 Mar 2017 16:13:05 +0000</pubDate>
      <link>https://forem.com/evgenyk/a-mythical-full-stack-developer</link>
      <guid>https://forem.com/evgenyk/a-mythical-full-stack-developer</guid>
      <description>&lt;p&gt;&lt;strong&gt;How full is your stack? It really depends.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I have friends deploying real-time systems to chips, and know developers writing artificial intelligence code, there is somebody submitting code to Linux kernel or nodejs, and somebody is creating a to-do app right now.&lt;/p&gt;

&lt;p&gt;For whatever reason I never understood this notion of a full stack developer. On the other hand I don't believe in front-end developers, or back-end developers or whatever end developers either.&lt;/p&gt;

&lt;p&gt;A good developer could figure out what is needed and what's the best way of doing it. In my mind, measuring people by skills is reducing their potential usefulness to a box we want to put them in.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One thing that is more important than discussing stacks is becoming really good at figuring things out on the fly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Technology will evolve, there always be new programming languages and frameworks. You might want to stop chasing the latest tools and rather become excellent at figuring stuff out.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hi, I'm Evgeny</title>
      <dc:creator>Evgeny</dc:creator>
      <pubDate>Fri, 17 Feb 2017 05:26:23 +0000</pubDate>
      <link>https://forem.com/evgenyk/hi-im-evgeny</link>
      <guid>https://forem.com/evgenyk/hi-im-evgeny</guid>
      <description>&lt;p&gt;I have been coding for 20 years.&lt;/p&gt;

&lt;p&gt;You can find me on GitHub as &lt;a href="https://github.com/evgenyk" rel="noopener noreferrer"&gt;evgenyk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am currently learning more about large-scale event stream processing.&lt;/p&gt;

&lt;p&gt;Nice to meet you.&lt;/p&gt;

</description>
      <category>introduction</category>
    </item>
  </channel>
</rss>
