It’s really not that hard. Authentication is about proving the identity of the subject e.g. logging in using information only known / in possession by the subject (password, mfa etc). Authorization is about establishing what permissions that identity has in a given context. E.g. is this identity allowed to create/read/update/delete these resources. Authorization is typically done through roles (RBAC) or more granulary through attributes (ABAC).
Now how does this compare to AuthN and AuthZ…
Holy crap after writing that AuthN must be authentication and AuthZ must be authorization.
I’m a genius.
Indeed you are ;)
Just call it a11n or a12n and nobody will know if they can’t count or if you can’t count
And even with ‘AuthN’ vs ‘AuthZ’ it always takes me a minute to spell them out and work out which is which
What’s this authN / authZ business?
AutheNtication vs. AuthoriZation, I believe
How’s that supposed to help?
AuthN is: I claim to be dreadgoat, but how can I prove it? (login, password, mfa)
AuthZ is: Now that you know I am dreadgoat, do I have permission to post this comment? (access control, roles, attributes)I know what they are and the differences, I thought the N and Z would somehow be an easy way to work it out/remember. But the trick is just to remember which is which.
N comes before Z in the alphabet, and you must always AuthN before you can AuthZ. Easy mnemonic.
This is a great explanation, thank you.
I deal mainly with authorization and I’m not sure I’ve ever had the differences explained this simply (so I incorrectly lump them together)
It doesn’t
deleted by creator
AutheNtication
Ahh, that would make more sense, thank you - corrected
That’s the thing, nobody really knows!
Who doesn’t like compounding two words with different meaning by definition, but for some inexpiable reason have the same meaning in the programming world, by shortening them?
Now the poor, average programmer has to deal with strange words. One such example is “permission,” which is normally used within a casual context, rather then within a more serious context, like a program handling secure data. The poor programmer can now no longer take his job seriously, and is now forever in an existential crisis, due to the lack of formality. ;)
I made a class one time called Auther that did both. Got some chuckles in the code review so I was pretty happy with that
Access Control
deleted by creator