

2023
users: identity, authentication, accounts
digital identity & providers
agenda

authentication in the modern age
user models and profiles
digital identity

digital identity
information used by computer system to represent an external agent
the agent does not need to be a human
representation is unique
within the system
digital identity

examples
-
username
-
name and surname
-
pesel, SSN
-
email address / phone number
-
serial number
-
uuid
digital identity

identity management
-
registration
-
changes
-
takeover
-
delegation
but also
-
theft
-
regulations
digital identity

in 2023, IT's COMPLICATED
and
you don't want to do it yourself
identity provider

identity provider
An identity provider (IdP) is a system that creates, stores, and manages digital identities
identity provider

standards
providers
-
openid connect
-
saml
-
google, microsoft, facebook, ...
-
auth0, okta, ping, onelogin, ...
-
roll your own
identity provider

proving you are you
agent needs to prove they have someting secret
-
password
-
biometrics
-
two-factor authentication
-
one-time codes
secure tokens

eyJodHRwczovL3NpbHZhaXIuY29tL3BhcnRuZXJJZCI6InNpbHZhaXIiLCJlbWFpbCI6Im1pY2hhbC5sb3dhcy1yemVjaG9uZWtAc2lsdmFpci5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6Ly9zaWx2YWlyLXByZXByb2Qtc2lsdmFpci5ldS5hdXRoMC5jb20vIiwiYXVkIjoiMG5MYXZzdEU5dnBiTUJDNkZGSFo0S3M0OGIyalgwMG4iLCJpYXQiOjE2NzgxMTI5ODQsImV4cCI6MTY3ODE0ODk4NCwic3ViIjoiYXV0aDB8NWIzZGI0ZTA4Yjk5ODMwNjUyMmJlMDg2In0
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik56UXpRelUwUlVaRU1qUkNSVGN4UlRFeE1rWTNORVZCTXpNeE5qQXpNa0pFUkVWR01qRkZNdyJ9
{ "alg":"RS256",
"typ":"JWT",
"kid":"..." }
identity token
{ "https://silvair.com/partnerId":"silvair",
"email":"michal.lowas-rzechonek@silvair.com",
"email_verified":true,
"iss":"https://silvair-preprod-silvair.eu.auth0.com/",
"aud":"0nLavstE9vpbMBC6FFHZ4Ks48b2jX00n",
"iat":1678112984,
"exp":1678148984,
"sub":"auth0|5b3db4e08b998306522be086" }
EWLEYzqNzm2pz8p0tcV42dqqitYgorf8O1T7F5_POoLvUozj547eV_Lm7gAJV3uIzSGwe_gCvWQsWX4CHGNSKPIVSCQpr-LobeDgJYinmrJLKopwnzmcN_LUP1L4YUxq3WuQman9qgGTB8aQWdqR2iyaGLr9Eetdqxbxn8eKUQtKDsYoS6yql3IDMADvfuvbMULvnQNg0ghI__sCqUtrEbYB-gVHP-z5n7-3X3MIHKBKHxpRSzbrlhjm8HWoAegsuFI-GH-8c5sPT2zYUcUQO6qvzm7grH366cyS_xO1Ege3nXjQEyiFc7bbvyxoTIGQcY67ByDnjll6R5GkMjbLVQ
signature
secure tokens

identity token
access token
-
issued by the provider
-
valid a long time
-
contains agent's details
-
meant to be cached on the server side
-
issued by us
-
valid a short time
(but can be refreshed) -
contains just what we need

authentication flow

enter 2023
agents don't share all their info with us

agents want to authenticate with identity provider only

authentication flow

Hi, I have a reservation
good morning! I need to know who you are, and we trust these providers
-
the government
-
google
-
microsoft
which one would you prefer?
Very well, here's the URL!
Let's go with microsoft
authentication flow

<opens url on their phone>
<logs in ON THEIR PHONE>
<receives a one-time code>
alright, microsoft says that code is "122378457854378439"

this is handled by your web browser
authentication flow

<uses hotel's secret and one-time code to retrieve id token>
<verifies the signature>
welcome, mr. lowas-rzechonek!
here's your room key. it's valid for one day, please come by tomorrow to refresh it
<uses key to open the door>
authentication flow

key points
-
agent can choose a provider
-
provider shows who is asking and for what
privacy is a thing -
agent doesn't get their id token
we don't trust them to authenticate the receptionist -
agents receive only a short-lived access token
user profile

where to keep information on authenticated users?
identity provider is not a database
you can't just write stuff on agents' ID
user profile

user model
a data structure used to capture certain characteristics about an individual user
user profile
an instance of a user model tied to a specific user
colloquially known as "account"
user profile

examples
-
company name
-
preferred language
-
have they accepted the terms?
-
additional permissions
all of that needs to be stored in our system, tied to some identity
a single agent might have multiple profiles

what are we doing wrong?
we expect agents to show us their password
we give id tokens back to agents
we keep parts of the profile on the provider's side
problems

agents show their password
this is a post-it note on the monitor
very hard to add 2fa, biometrics, passkeys
we risk leaking the password (e.g. in logs)
problems

agents use id token
identity theft when someone impersonates us
we can't forcefully log them out
problems

user profile on the provider's side
vendor lock
performance issues
problems


2023
users: identity, authentication, accounts
questions?
Identity, authentication, authorization
By Michał Lowas-Rzechonek
Identity, authentication, authorization
- 206