I decided to write this small post up because I get AUTHeNtication and AUTHoriZyr ation confused a lot and want to help make it more clear for anyone else struggling.
Authentication and authorization are two related words that are often used interchangeably, but mean different things and have very functionality within a system.
Authentication (Auth-N)
Authentication is the act of validating that users are who they claim to be.
Validating authenticity can be accomplished by having something physical like a key card, by having a user login with passwords or 2FA, utilizing Captcha tests, or even biometrics for a user.
Authentication is used in conjunction with authorization usually as it is important to authenticate that a user is who they say they are before giving the authorization.
Authorization (Auth-Z)
Authorization is a process of giving a user permission to access a specific resource(s) or function(s).
Authorization levels are the difference between a general user and an admin user. An admin user will have more abilities that a general user and it is important to authorize the rolls properly to ensure general users don't accidently, or intentionally, harm a system.
Keep in mind that authentication is not 100% needed to gain authorization. This depends on the system and what information/abilities the systems has if it needs different levels of authorization and where authentication is needed.
Think about a blogging platform...
-Everyone should have access to read public posts.
-Users should need to authenticate themselves as users to post a blog and not post as someone else.
-Admins should need a different level of authorization, after they authentication themselves, to monitor the platform, the associated database, and its users activity.
In this case authentication is needed before authorization is given to ensure users can't post a blog as a different user and users can't modify things like admins.
References
- Security+ cert book
- Web Application Hackers Handbook
- https://auth0.com/docs/authorization/concepts/authz-and-authn
- https://www.ssl2buy.com/wiki/authentication-vs-authorization-whats-the-difference
Discussion (6)
Good, clear distinction - well said.
On authorization, I suggest thinking about admins and support people being NOT authorized to change data or transactions posted by regular users.
In some situations, that level of permission may be appropriate but it's worth thinking about.
I have worked in financial services (as lead user, primary on-site support person, and liaison with software techs) where internally changing data is a serious business. Therefore, the system/s we worked with deliberately precluded making data changes other than via the normal user-facing software.
+1 for bepop gif. #classic
The Authentication + Authorization confusion happens to me too, because a lot of people throw around auth and it can be impossible to know which one they mean.
👏👏
I thought it could be valuable to link an analogy to authn versus authz. I pulled it from this article
Simple yet useful
So useful content, I was struggling with this.
Always cool to see something simple and useful!