Okta Customer Identity Cloud Explained from Scratch
A patient, plain-language guide to the part of Okta built for the people who use your products: your customers, your partners, and the businesses you sell to. You will learn what customer identity is, how sign-up and sign-in work, how tokens, sessions, and multi-factor protection fit together, how to extend and secure the platform, and how to run it well. No code, no jargon left unexplained.
Imagine you run a busy shop. Every day, hundreds of shoppers walk in. Some are regulars you greet by name. Some are visiting for the first time. Some want to buy a gift for a friend, some want to return an item, and a few, sadly, are trying to steal. A good shop needs a front door that welcomes honest visitors warmly, remembers regulars without making them show identification every time, and quietly keeps troublemakers out. It must do all of this without making the honest majority feel suspected.
Customer identity is the front door of a digital product. When someone creates an account on your website, signs in to your mobile app, resets a forgotten password, or approves a login on their phone, they are using your product’s front door. Building that door from scratch is surprisingly hard. It must be safe, fast, friendly, accessible to everyone, and ready for millions of visitors on the busiest day of the year. Okta Customer Identity Cloud is a service designed to be that door, so that your team can spend its time on what makes your product special.
This guide assumes you know nothing about the subject. Every term is explained when it first appears, and every major idea comes with an everyday comparison. There is no code anywhere in these pages. By the end you will understand the building blocks, how they connect, how to protect them, and how to avoid the mistakes that trip up newcomers.
Okta’s customer identity offering has evolved, and product names, editions, feature names, limits, and screens change over time. Parts of it have also been known by other names. Treat this guide as a map of the ideas, which stay stable, rather than a list of exact menu labels or numbers, which do not. Please confirm every specific detail, such as feature availability in your plan, limits, regions, and screen names, in your own dashboard and in the official Okta and Auth0 documentation. This guide gives no pricing, limits, or service-level figures.
1Why Customer Identity Matters
Every digital product that lets people have an account has an identity problem. The question is only whether you solve it well.
Think of the last time you signed up for an online service. You probably typed an email address, chose a password, perhaps confirmed your email, and maybe approved a code on your phone. Behind those few moments sit many decisions: how to store the password safely, how to stop someone guessing it, what to do when you forget it, how to let you sign in with a social account, and how to remember you on your own phone without asking too often. Each decision affects security, convenience, and trust.
The business stakes
- Conversion: a clumsy sign-up form makes visitors give up before becoming customers.
- Trust: a breach of customer accounts damages a brand for years.
- Cost: support calls about lost passwords consume time and money.
- Compliance: laws about personal data apply to the information you collect at the front door.
- Speed: every week spent building login screens is a week not spent on your real product.
Why not simply build it yourself
Many teams start by building sign-in themselves, because it seems simple. A table of usernames and passwords, a form, and a check. Years later they are maintaining password storage, reset emails, multi-factor prompts, social sign-in connections, breach monitoring, bot defences, audit trails, and accessibility fixes, while attackers constantly invent new tricks. A specialist service spreads that cost across thousands of customers and employs people who think about identity all day.
You could build your own bank vault for your shop, but most shopkeepers rent a safe deposit box from a bank. The bank’s vault is built by experts, inspected, insured, and shared across many customers. A customer identity service is the safe deposit box for the front door of your product.
flowchart LR
V["Visitor"] --> FD["Front door:
sign up, sign in, recover"]
FD --> P["Your product"]
FD --> S["Security checks"]
FD --> D["Customer data"]
Figure 1 shows the front door in the middle. Everything flows through it: who gets in, what protection they pass, and what information is gathered about them. A well-run door makes the rest of the building easier to manage.
Before reading further, sign up for any service you use and pay close attention to every step. Notice what feels smooth and what feels annoying. You are about to learn how to design those moments on purpose.
2Core Concepts You Need First
A short vocabulary unlocks everything else. Read the table once, then return to it whenever a word feels unfamiliar.
| Term | Plain meaning | Everyday comparison |
|---|---|---|
| Identity | The digital record that represents a person or thing | A membership card |
| Authentication | Proving who you are | Showing your card at the door |
| Authorization | Deciding what you may do after you are in | Which rooms your card opens |
| Tenant | Your private space inside the service | Your own floor in a shared building |
| Application | A website or app that uses the service to sign people in | One entrance to your shop |
| Connection | A source of identities, such as a database or social account | A kind of ID you accept |
| Universal Login | The hosted sign-in page run by the service | A professionally staffed reception desk |
| Token | A signed digital note that carries proof or permissions | A stamped wristband |
| Session | The period during which a person stays signed in | A day pass |
| Multi-factor authentication | Proof using more than one kind of evidence | Card plus fingerprint |
| Passkey | A phishing-resistant sign-in method using a device-held secret | A key that only fits your lock |
| Action | A custom step that runs during sign-in | A greeter who adds a custom welcome |
| Organization | A business customer grouping within your tenant | A company’s own desk inside your coworking space |
| Role | A named bundle of permissions | A job title with set duties |
| Log | A record of events that happened | A security camera tape |
Authentication versus authorization
These two words sound alike and are constantly confused. Authentication answers “who are you?” Authorization answers “what are you allowed to do?” A hotel receptionist checks your booking to authenticate you, then hands you a key that opens only your room, which is authorization. Customer identity covers both, but they are different jobs, and mixing them up leads to design mistakes.
Customer versus workforce identity
Workforce identity is about the people who work for a company: employees, contractors, and partners who need access to internal tools. Customer identity is about the people who use a company’s products. The two differ in scale, behaviour, and expectations. Employees are few, known, and managed; customers can be millions, anonymous at first, and unwilling to jump through hoops. Customers choose whether to use your product at all, so friction costs money.
flowchart TD
ID["Identity
who someone is"] --> AN["Authentication
prove it"]
AN --> TK["Token
signed proof"]
TK --> AZ["Authorization
what is allowed"]
AZ --> RS["Resource
your product"]
Figure 2 gives the order of events in the simplest case. A person with an identity proves themselves, receives a token as evidence, and the product uses that token to decide what to allow.
At a concert, your ticket proves you bought a place. The wristband you get at the gate proves the ticket was checked. The colour of the wristband decides whether you may enter the backstage area. Each step builds on the last.
Why precise vocabulary saves time
Teams that use words loosely argue at cross purposes. One person says “login” and means the whole journey from first click to final redirect; another means only the password check. Agreeing on terms such as tenant, application, connection, token, and session lets everyone discuss problems with the same meaning. Keep a short glossary beside your design documents, and add to it whenever a new word appears in a meeting.
3Where Customer Identity Fits in the Okta Family
Okta serves two audiences with two families of products. Knowing which is which prevents a great deal of confusion.
Okta is best known for workforce identity: helping organizations manage how employees sign in to the tools they use for work. The customer-facing side is a different offering, shaped for the needs of products with public audiences. It grew out of a platform widely known as Auth0, which Okta acquired, and the two names may still appear together in documentation, dashboards, and conversations. Naming and packaging have shifted over time, so confirm current names in the official documentation.
Employees and partners
Signing staff in to business applications, with policies, lifecycle management, and governance.
Your product’s users
Sign-up, sign-in, and account protection at consumer and business-customer scale.
Typical differences in practice
| Topic | Workforce identity | Customer identity |
|---|---|---|
| Who signs in | Employees and contractors | Shoppers, subscribers, patients, members, business customers |
| Number of people | Hundreds to tens of thousands | Thousands to many millions |
| How accounts begin | Created by an administrator or an HR feed | Created by the person through sign-up |
| Brand experience | Mostly functional | Carefully branded and tuned for conversion |
| Main risks | Insider access, over-privilege | Fake sign-ups, credential stuffing, account takeover |
| Traffic pattern | Predictable work hours | Sudden spikes from sales and campaigns |
flowchart LR
ORG["Your organization"] --> WF["Workforce identity
employees"]
ORG --> CI["Customer identity
product users"]
WF --> INT["Internal tools"]
CI --> PROD["Customer-facing products"]
Figure 3 shows that a single organization can use both. Staff use the workforce side to reach internal tools, and customers use the customer side to reach products. Keeping them conceptually separate makes designs cleaner and safer.
A department store has a staff entrance with badge readers and a customer entrance with friendly doors and signs. Same building, different doors, different rules, different design.
4Tenants, Environments, and Regions
Your tenant is your private home inside the service. Where it lives and how many you keep shape everything downstream.
A tenant is a self-contained space in which all your settings, applications, connections, users, and logs live. Nothing in your tenant is visible to other customers, and nothing in theirs is visible to you. When you begin, you create a tenant and choose a name and a region. The region is the geographic area in which your data is stored and processed. Region choices matter for speed, because distance adds delay, and for law, because some rules restrict where personal data may live.
Separate tenants for separate stages
A common and wise practice is to keep different tenants for different stages of your work: one for development and experiments, one for testing, and one for real customers. Changes can be tried safely in the first two before they touch the third. Without this separation, a mistaken experiment could lock out real customers.
Development
A place to explore settings freely. Nothing here matters if it breaks.
Staging or test
A near copy of production where changes are checked before release.
Production
The tenant real customers use. Changes here are careful and recorded.
Choosing a region
- Where are most customers? Closer regions usually give snappier sign-in.
- What do laws require? Some places require that personal data stay within their borders.
- What are your contracts? Large customers may demand particular locations.
- Can you change later? Moving a tenant between regions can be difficult, so decide with care and confirm the options in current documentation.
Tenant naming and domains
A tenant has a name that usually appears in its default web address. Customers see this address during sign-in unless you set up a custom domain, which lets sign-in pages appear under your own brand, such as a login address on your own website. Custom domains build trust, because people see a familiar name in the address bar rather than a stranger’s. They also help with some browser privacy features. Plan for a custom domain early, since changing the address that customers see later is disruptive.
flowchart LR
DEV["Development tenant"] --> TST["Test tenant"]
TST --> PRD["Production tenant"]
PRD --> CUS["Real customers"]
Figure 4 shows a one-way flow. Changes are made and checked early, then promoted. Real customers only ever meet changes that have survived two earlier stages.
A restaurant tests a new dish in the kitchen, serves it to staff, and only then adds it to the menu. Nobody serves an untried recipe to a full dining room.
5Applications and APIs
To use the service, you register each of your products so the service knows who is asking for sign-in.
In the service, an application is a registration that represents one of your products: a website, a mobile app, a single-page app, or a server-side program. Registering gives the application a public identifier and, where appropriate, a secret. It also records where customers may be sent after sign-in. Think of registration as introducing each of your entrances to the reception desk, so that the desk knows which doors are legitimate.
Kinds of applications
Single-page apps
Websites that run mostly in the visitor’s browser. They cannot keep secrets safely.
Regular web apps
Websites rendered on your servers. They can keep a secret safe on the server.
Native apps
Mobile or desktop apps installed on a device. They also cannot keep secrets safely.
Machine-to-machine
Programs talking to other programs with no human present.
Why the type matters
The kind of application decides which sign-in methods are safe. A program running on your server can hold a private secret that proves it is who it says it is. A program running in a visitor’s browser or on their phone cannot, because anyone can inspect it. So public applications use methods designed not to depend on a secret. Picking the right type is one of the most important early choices, and the wrong choice is a common source of security problems.
APIs as protected resources
Besides applications, you can register your own back-end services, called APIs, as resources that the service knows about. When an application asks to call your API, the service can issue a token that is meant for that API and carries only the permissions that API recognizes. This lets your back-end verify, without calling anyone, that a request really carries proper permission.
flowchart TD
APP1["Website"] --> TEN["Your tenant"]
APP2["Mobile app"] --> TEN
APP3["Back-end job"] --> TEN
TEN --> API["Your registered API"]
Figure 5 shows that one tenant can serve many entrances and many protected services. Each registration is independent, with its own settings, but they share the same customers and the same sign-in experience.
A shopping centre has several entrances and several shops. Each entrance and each shop is registered with the management, who control which keys fit which doors.
Create a separate registration for each product and each environment. Sharing one registration among many apps looks tidy but makes changes risky, because adjusting it for one app can silently break the others.
6Connections: Where Identities Come From
A connection is a way of recognizing a person. You can accept several kinds at once.
When someone signs in, the service must check them against some source of truth. That source is called a connection. Different customers prefer different ways to prove who they are, and a flexible service lets you offer several side by side.
Database connection
Accounts created in your tenant, usually with an email or username and a password, stored securely by the service.
Social connections
Sign in with an existing account from a well-known provider, so the customer need not create a new password.
Passwordless connections
Sign in with a code or a link sent to an email or phone, or with a device-held key.
Enterprise connections
Sign in with a company’s own corporate directory, used when you sell to businesses.
Database connections
This is the classic choice. The customer creates an account with your product, and the service stores their credentials safely, using one-way scrambling of passwords so that the real password is never kept. It also handles the awkward parts: reset emails, rules about password strength, checks against known stolen passwords, and blocks after too many failed attempts.
Social connections
Many customers prefer not to invent yet another password. Letting them sign in with an account they already have is fast and reduces forgotten-password problems. The provider vouches for the customer, and the service passes along the details the customer agreed to share. You should decide which providers your audience actually uses, because offering too many buttons clutters the screen.
Passwordless
Passwordless sign-in removes the password altogether. The customer receives a short-lived code or a link, or uses a key held in their device. This removes the biggest weakness in most systems, the human habit of reusing weak passwords.
Enterprise connections
When you sell to other businesses, their employees often prefer to sign in with their company credentials. Enterprise connections connect to a customer’s own directory or identity provider. Each business gets its own connection, and the service routes people to the right one based on a hint, usually their email domain.
flowchart LR
C1["Database
email and password"] --> UL["Sign-in page"]
C2["Social account"] --> UL
C3["Passwordless
code or key"] --> UL
C4["Enterprise
company directory"] --> UL
UL --> OUT["Same kind of result
for your product"]
Figure 6 shows the key benefit. Your product receives a uniform answer no matter how the customer proved who they are. You can add or remove ways of signing in without rebuilding your product.
A shop may accept a driving licence, a passport, or a national ID card as proof of age. Different documents, same decision at the till.
Deciding which connections to offer
More choice is not always better. Each connection adds a button, a test case, and a support topic. Start by asking your customers or studying their habits. A shop for young shoppers may benefit from several social options, while a professional tool may prefer corporate sign-in and a plain email option. Begin with a small set, measure which are used, and expand only when there is evidence of demand.
7Universal Login and Branding
The hosted sign-in page is where trust is won or lost. Understand why the service wants to run it.
Universal Login is the hosted sign-in experience. Instead of building login forms inside every product, you send customers to a page run by the service, and once they are signed in, send them back. The page is customizable in appearance, so it can carry your logo, colours, and wording. This centralization has a security benefit and a practical one.
Why a hosted page is safer
When login forms live inside every application, every application must handle passwords correctly. One mistake in one app can expose customers. With a hosted page, passwords are only ever typed into one carefully maintained place. Applications never see them. Additionally, new protections, such as new factors or new bot defences, appear everywhere at once, because there is only one page to update.
Why a hosted page is more convenient
A single sign-in page makes it possible for a customer to sign in once and move between your products without typing credentials again. That is called single sign-on, and it relies on the central page remembering the visitor. It also gives a consistent look across web and mobile.
Branding your page
- Logo and colours: help people recognize they are in the right place.
- Wording: friendly, short, and clear text in the languages your audience speaks.
- Custom domain: shows your own web address, which builds trust.
- Accessibility: readable contrast, keyboard use, and screen-reader support.
- Layout choices: advanced customization may be available, and should be tested thoroughly.
sequenceDiagram
participant C as Customer
participant A as Your app
participant U as Universal Login
C->>A: Open app, press Sign in
A->>U: Send customer to hosted page
C->>U: Prove who they are
U->>A: Send customer back with proof
A->>C: Signed in
Figure 7 shows the redirect round trip. The customer is briefly in the hands of the service, then returns to your app carrying proof. Your app never touches the password.
At an office building, visitors check in at the main reception desk rather than at each company’s door. The desk is staffed by specialists, and every visitor follows the same trusted process.
8Authentication Flows and Standards
Sign-in follows agreed recipes, called flows, based on open industry standards.
You do not need to memorize protocol details to use the service well, but knowing the shape of a few ideas helps greatly. Customer identity today rests on open standards that let different systems work together. Two names appear constantly. One is about delegated permission: letting an application act on a person’s behalf without learning their password. The other builds on it to describe who the person is. Together they are the common language of modern sign-in.
The idea of a flow
A flow is a sequence of steps between the customer, your application, and the service. Different applications use different flows because their capabilities differ. The most widely recommended pattern for apps with a user present is one in which the application first receives a short-lived code after the customer signs in, then exchanges that code for tokens. This avoids passing tokens through the browser’s address bar, and has added safeguards that protect against interception, which are especially important for public applications.
Flows for different situations
| Situation | Suitable idea | Plain explanation |
|---|---|---|
| Website or app with a person present | Code exchange with extra proof of origin | Get a one-time code, then trade it for tokens |
| Server program with no person | Client credentials | The program proves itself with its own secret |
| Device with no keyboard, such as a TV | Device authorization | Show a code on the screen and approve on a phone |
| Staying signed in without asking again | Refresh tokens | Quietly renew expired tokens |
Older flows to avoid
Some older approaches, such as handing passwords directly to an application, or returning tokens directly through the browser’s address, are now discouraged for good reasons. Prefer the modern recommended flows, and confirm in the current documentation which flows the service recommends for each application type.
sequenceDiagram
participant B as Browser or app
participant S as Service
participant R as Your back-end
B->>S: Request sign-in
S->>B: Customer signs in, returns short-lived code
B->>S: Trade code for tokens
S->>B: Tokens
B->>R: Call with token
R->>B: Protected data
Figure 8 shows why the code step exists. The code is useless on its own and expires quickly. Only the legitimate application can trade it for tokens, which keeps eavesdroppers away from real credentials.
A cloakroom gives you a numbered ticket. The ticket alone is not your coat, and it only works at that cloakroom. You trade it for the coat when you return. The ticket is the code, the coat is the token.
9Tokens and Sessions
Tokens carry proof. Sessions remember people. The two work together but are not the same.
After a successful sign-in, the service issues tokens. A token is a small, digitally signed message. Because it is signed, anyone who trusts the service can check that it is genuine and unmodified, without phoning the service each time. Different tokens do different jobs.
Identity token
Tells your application who just signed in and when, with a few details about them.
Access token
Lets your application call a protected service, carrying the permissions it was granted.
Refresh token
Lets your application quietly obtain fresh tokens without asking the customer to sign in again.
Short lives are safer
Tokens are intentionally short-lived. If one is stolen, it becomes useless soon. Refresh tokens last longer, so they deserve extra care, and many designs rotate them: each time one is used, a new one is issued and the old one is retired. If an old one appears again, it signals theft and the whole chain can be cancelled.
Two kinds of memory
There are really two memories at work. The service remembers the customer, so that returning to the hosted page does not require typing credentials again. Your application also remembers the customer, usually with its own session in the browser. Signing out must therefore consider both. A customer who signs out of your app but remains signed in at the service may be signed straight back in the next time. Decide what sign-out should mean in your product, and test it.
Lifetimes are product decisions
How long should a session last? A banking product may want short sessions and frequent re-checks. A casual reading app may prefer long sessions for convenience. Neither answer is right everywhere. Balance risk against convenience, and let the sensitivity of the data guide you.
flowchart LR
SI["Sign-in succeeds"] --> IDT["Identity token
who"]
SI --> ACT["Access token
what is allowed"]
SI --> RFT["Refresh token
renewal"]
ACT --> EXP["Expires soon"]
EXP --> RFT
RFT --> NEW["New access token"]
Figure 9 shows the renewal loop. The short-lived access token expires, and the refresh token is used to obtain a replacement. The customer sees nothing, and security improves because the exposed token is always brief.
A hotel gives you a room key card that works for a day and a front desk that can reissue it when you show your booking. The key card is the access token; the booking is the refresh token.
What goes wrong when tokens are mishandled
Common mistakes include storing long-lived tokens in places that other programs on the device can read, putting too much personal detail inside tokens that many systems can see, and accepting tokens without checking who they were meant for. Each mistake is avoidable. Store tokens where the platform recommends, include only what is needed, and always check the audience and expiry in your back-end.
10Multi-Factor Authentication, Passwordless, and Passkeys
Passwords alone are weak. Adding more evidence, or removing the password entirely, makes accounts far safer.
Passwords are the oldest and most abused method of proof. People reuse them, choose guessable ones, and get tricked into typing them into fake pages. Multi-factor authentication asks for a second kind of evidence, so that a stolen password alone is not enough. The kinds of evidence are traditionally grouped as something you know, something you have, and something you are.
| Kind | Examples | Strengths and weaknesses |
|---|---|---|
| Something you know | Password, answer to a question | Easy but guessable and reusable |
| Something you have | Phone, security key, authenticator app | Strong if the device is protected; can be lost |
| Something you are | Fingerprint, face | Convenient; often unlocks a device-held key rather than being sent anywhere |
Choosing second factors
- Codes by text message: familiar and easy, but weaker because numbers can be hijacked.
- Authenticator apps: generate time-based codes on the phone, stronger than text.
- Push approvals: a prompt to approve on a phone, convenient but open to tired users approving by mistake.
- Security keys and device-bound credentials: the strongest, resistant to fake pages.
Passkeys
Passkeys are a newer approach where the customer proves themselves with a secret held in their device and unlocked with a fingerprint, face, or device code. There is no password to steal and nothing to type into a fake page, because the secret works only for the real site. They are both safer and easier, which is rare. Support for them is growing, and you should confirm current availability and recommended setup in the documentation.
Adaptive prompting
Asking for extra proof every time annoys customers. A smarter approach asks only when something looks unusual, such as a new device, a distant location, or odd behaviour. This balances safety with convenience, and is often called adaptive or risk-based multi-factor authentication. Availability depends on your plan.
flowchart TD
SI["Customer signs in"] --> RK{"Looks risky
or unusual?"}
RK -->|"no"| EZ["Let in smoothly"]
RK -->|"yes"| MF["Ask for extra proof"]
MF --> OK{"Proof valid?"}
OK -->|"yes"| EZ
OK -->|"no"| BL["Block and record"]
Figure 10 explains the balance. Most sign-ins pass smoothly. Unusual ones face a challenge. Failures are blocked and logged. Customers feel little friction while attackers meet resistance.
A bank clerk waves through a regular customer making a usual withdrawal, but asks questions if the same person suddenly asks for a huge sum from a foreign country. Extra checks appear when behaviour changes.
Recovery when a factor is lost
Customers lose phones, change numbers, and forget which device they enrolled. A recovery plan is therefore as important as the factor itself. Offer more than one enrolled method, provide backup codes that customers can store safely, and design a support path that verifies identity carefully. If recovery is too easy, attackers use it as a side door; if it is too hard, loyal customers are locked out for good.
11Users, Profiles, and Metadata
Every customer has a profile. Deciding what goes in it, and where, is a design choice with lasting effects.
A user record holds the basics: identifiers, email, name, when they last signed in, and which connection they used. It also lets you store extra information about the person, usually called metadata. Metadata comes in two flavours that differ in who may change them. Information the customer may edit about themselves sits in one place. Information that only trusted parts of your system should control, such as a subscription level or an internal flag, sits in another.
What belongs in the profile
- Identity facts: email, name, picture, verified status.
- Preferences: language, theme, notification choices.
- Permissions-related facts: roles or plan level, set by trusted systems only.
- Little else: avoid turning the identity record into a general customer database.
Keep the profile lean
It is tempting to store everything about a customer in the identity record, since it is close at hand. Resist. Large, constantly changing data slows things down and creates privacy duties. Keep rich business data in your own systems and link it to the identity record by its identifier. The identity service should answer “who is this and what may they do”, not “what did they buy last year”.
Linking accounts
Customers often sign up with an email one day and use a social account the next, creating two records for one human. Account linking merges them so the person sees one history. Linking must be done carefully: automatically merging accounts based on an unverified email can let an attacker take over someone else’s account. Require proof that the person controls both accounts before merging.
Verified email matters
An email address is only meaningful if the person has proved they control it. Many decisions, such as password resets and account linking, depend on this. Make email verification part of your sign-up flow, and treat unverified addresses as unconfirmed claims rather than facts.
flowchart LR
U["User record"] --> B["Basic facts
email, name, verified"]
U --> UM["Customer-editable
preferences"]
U --> AM["Trusted-only
plan, flags"]
U --> L["Link to your own
business database"]
Figure 11 shows the recommended shape. The identity record stays small. Heavier business data lives in your own systems and is joined using a stable identifier.
A library card has your name and number. It does not list every book you have ever borrowed; that history lives in the library’s records, found using the number on the card.
12Organizations: Serving Business Customers
When your customers are companies, you need a way to group people by the business they belong to.
Many products sell to businesses, whose employees then become users of your product. Each business wants its own members, its own sign-in rules, and its own administrators, while sharing the same underlying product. An organization is a grouping inside your tenant that represents one such business. It lets you manage members, roles, and sign-in options per business, rather than lumping everyone together.
What organizations enable
- Membership: know which people belong to which business.
- Per-business roles: a person can be an administrator in one business and an ordinary member in another.
- Per-business sign-in options: one business signs in with its corporate directory; another uses passwords.
- Invitations: business administrators invite their own colleagues.
- Branding per business: optional tailored sign-in pages.
The multi-tenant product problem
Products that serve many businesses face a classic challenge: keeping each business’s data and settings apart while running one product for all. Organizations give you the identity side of the answer: every token can say which business the person is acting for. Your product then uses that fact to show only that business’s data.
Self-service administration
As you add business customers, you cannot manually configure each one’s sign-in. Look for ways to let each business administrator set up their own corporate sign-in connection and invite their own people, within boundaries you set. This turns a bottleneck into a feature.
flowchart TD
T["Your tenant"] --> O1["Organization:
Business A"]
T --> O2["Organization:
Business B"]
O1 --> M1["Members and roles A"]
O2 --> M2["Members and roles B"]
O1 --> S1["Business A sign-in:
corporate directory"]
O2 --> S2["Business B sign-in:
passwords"]
Figure 12 shows two businesses side by side. They share your product and tenant but keep separate membership and rules. Adding a third is a matter of configuration, not building.
A coworking space hosts several companies. Each has its own desks, door codes, and rules, while sharing the building, the front desk, and the kitchen.
13Architecture and Components
A bird’s-eye view of how the pieces fit together makes every later topic easier.
Picture the whole system as layers. At the top are your customers and the devices they use. Below them are your applications. Between your applications and your back-end sits the identity service, which handles sign-in and issues proof. Your back-end services trust that proof, and your own business data sits behind them. Supporting this are extension points, protective defences, and records of what happened.
Customers and devices
Browsers, phones, tablets, smart TVs, and any other place a person might sign in.
Your applications
Websites and apps that send people to sign in and receive proof back.
Identity service
Connections, hosted login, factors, tokens, organizations, and user records.
Your back-end
APIs that check tokens and apply your business rules.
Extensions and defences
Custom steps, attack protection, and email or messaging providers.
Records and monitoring
Logs, alerts, and reports that show what is happening.
flowchart TD
CU["Customers and devices"] --> AP["Your applications"]
AP --> IS["Identity service"]
IS --> CN["Connections"]
IS --> UL["Hosted login"]
IS --> MF["Factors"]
IS --> TK["Token issuing"]
IS --> EX["Custom steps"]
IS --> AT["Attack protection"]
IS --> LG["Logs"]
TK --> BE["Your back-end APIs"]
BE --> DB["Your business data"]
LG --> MON["Monitoring and alerts"]
Figure 13 gives the full picture. Notice that your back-end never handles passwords. It receives tokens from the identity service and checks them, which keeps the most sensitive work in one place designed for it.
Shared responsibility
Using a managed service does not mean all responsibility moves away. The provider keeps its platform secure, available, and up to date. You remain responsible for how you configure it, how you design your applications, how you protect your own back-end, and how you respond to events. Understanding where the line falls prevents the dangerous assumption that “the vendor handles security”.
When you rent an apartment, the landlord maintains the building and the locks. You still decide whether to lock the door, who gets a key, and whether to leave the window open.
14Actions: Extending the Sign-in Journey
Every business has its own rules. Extension points let you add them without waiting for the vendor.
Out-of-the-box behaviour never fits everyone. You might want to block sign-ups from certain domains, add a customer’s plan level to their tokens, notify another system when a new account appears, or demand extra proof for particular situations. Actions are small pieces of custom logic that run at defined moments in the journey. The service hosts and runs them, so you do not need your own server for these tasks.
Moments where custom steps can run
Before a new account is created
Check the details, and allow or refuse the sign-up.
After a new account is created
Tell your other systems that someone new has arrived.
During sign-in
Decide to add extra proof, block, or enrich the result.
Before tokens are issued
Add or adjust the details the tokens carry.
Around password changes and other events
React to sensitive moments in the account lifecycle.
Use sparingly and carefully
Custom steps run in the middle of sign-in, so anything slow or broken in them directly affects customers. If a step calls another system and that system is slow, sign-in becomes slow. If a step fails, sign-in may fail. Keep steps short, avoid unnecessary outside calls, plan for failure, and test thoroughly. Treat each step as part of the front door, not as a side project.
Managing custom steps like any other change
Custom steps are logic, and logic needs the same care as any product feature: written deliberately, reviewed by a second person, tested in a non-production tenant, versioned, and rolled out gradually. Teams that treat them as quick tweaks in a dashboard often discover that nobody remembers why a rule exists, or what will break if it is removed.
flowchart LR
ST["Sign-in begins"] --> A1["Custom step:
check rules"]
A1 --> D{"Allowed?"}
D -->|"no"| BL["Refuse politely"]
D -->|"yes"| A2["Custom step:
add plan to token"]
A2 --> TK["Tokens issued"]
Figure 14 shows two typical uses. The first step decides whether to continue. The second adds helpful facts to the tokens, so your product knows the customer’s plan without extra lookups.
A hotel front desk has a standard check-in, but staff may add steps for special guests: upgrade the room, send flowers, or flag a security concern. Those extras are custom steps on a standard process.
Keeping custom steps small and focused
Give each custom step a single, clear purpose and a descriptive name. A step that adds the plan to a token should do only that. Small steps are easier to test, easier to explain, and easier to remove. Write a short note describing what each step does, who owns it, and what depends on it, so that future team members do not have to guess.
15Attack Protection
Public sign-in pages attract attackers constantly. Built-in defences handle the common attacks.
The moment your product has a public sign-in page, automated attackers find it. They try stolen username and password lists from other breaches, hoping customers reused credentials. They create thousands of fake accounts. They hammer password-reset forms. A good identity service includes defences against the common patterns, which you should understand and turn on.
| Attack | What it is | Typical defence |
|---|---|---|
| Credential stuffing | Trying lists of stolen passwords across many accounts | Breached-password detection, bot detection, rate limits |
| Brute force | Guessing many passwords against one account | Blocking after repeated failures, delays |
| Fake sign-ups | Bots creating accounts to abuse offers or send spam | Bot detection, verification steps, sign-up rules |
| Suspicious IP addresses | Traffic from sources known to be abusive | Throttling or blocking |
| Account takeover | Taking control of a real customer’s account | Multi-factor prompts, alerts to the customer, session controls |
| Phishing | Tricking customers into typing credentials on a fake page | Passkeys, custom domain, customer education |
Layers of defence
- Bot detection: distinguishes real people from automated programs, sometimes by asking suspicious visitors to complete a challenge.
- Breached password detection: warns or blocks when a customer uses a password found in known leaks.
- Brute-force protection: locks or slows an account after many failed attempts.
- Suspicious IP throttling: slows traffic from sources behaving abnormally.
- Notifications: tells customers when something unusual happened on their account.
Do not punish the innocent
Defences that are too aggressive lock out real customers, especially those sharing a network address, such as an office or a mobile carrier. Tune settings, watch for false positives, and provide an easy recovery path. A defence that angers customers has a real cost.
flowchart TD
REQ["Sign-in attempt"] --> BT{"Looks like a bot?"}
BT -->|"yes"| CH["Challenge or block"]
BT -->|"no"| BP{"Password in known leaks?"}
BP -->|"yes"| WR["Warn or require reset"]
BP -->|"no"| BF{"Too many failures?"}
BF -->|"yes"| LK["Slow or lock"]
BF -->|"no"| PASS["Continue sign-in"]
Figure 15 shows layered inspection. Each layer catches a different kind of abuse, and honest customers pass through all of them without noticing.
Airport security has several layers: a ticket check, a document check, a baggage scan, and a body scan. No single layer catches everything, but together they stop most threats while letting most travellers through.
Telling customers when something unusual happens
Customers appreciate being told. A short message saying that a new device signed in, or that a password was changed, lets them react quickly if it was not them. Provide a simple link to secure the account. These notices are cheap, build trust, and turn every customer into an extra sensor against takeover.
16Roles, Permissions, and Authorization
After sign-in, your product must decide what each person may do. Roles keep this manageable.
Authorization is the second half of access. A permission is a single allowed action, such as reading an invoice. A role is a named bundle of permissions, such as “billing manager”. People are assigned roles, and the roles carry the permissions. This is far easier to manage than assigning individual permissions to thousands of people.
How roles reach your product
When tokens are issued, they can include the person’s roles or permissions. Your back-end reads these from the verified token and decides what to allow. Because the token is signed, it cannot be forged. Because it is short-lived, a change in someone’s roles takes effect fairly soon.
Where decisions should live
A useful rule of thumb is to keep coarse decisions near identity and fine decisions near the data. “Is this person a billing manager?” is a coarse question suited to identity. “May this person view this particular invoice belonging to this particular department?” is fine-grained and depends on business data, so your product should decide it. Cramming complex business rules into the identity service makes it brittle.
Least privilege
Give each person only what they need. A new role should start with few permissions and gain more only when a real need appears. Review who holds powerful roles on a regular rhythm, and remove access that is no longer needed.
flowchart LR
P1["Permission:
view invoice"] --> R["Role:
billing manager"]
P2["Permission:
export report"] --> R
P3["Permission:
update payment method"] --> R
R --> U1["Person A"]
R --> U2["Person B"]
U1 --> TK["Token carries role"]
TK --> API["API checks token"]
Figure 16 shows the chain from permission to decision. Management happens at the role level, which scales. Enforcement happens in your API, which reads the verified token.
A company gives job titles rather than listing every door for every employee. “Accountant” implies a set of keys. Changing a person’s job changes the keys in one step.
17Migrating Existing Users
Most teams already have customers. Moving them without forcing everyone to start over is its own craft.
If you have an existing user database, moving to a new identity service needs care. Customers expect to sign in tomorrow exactly as they did yesterday. Two main approaches exist, and many teams combine them.
Bulk import
Load user records in one operation. If password data can be moved in a compatible protected form, customers keep their passwords. If not, a reset will be required.
Automatic or lazy migration
Leave customers in the old system until they next sign in. At that moment, check credentials against the old system, and if correct, create the user in the new one.
Choosing between them
- Bulk is quick but depends on whether protected password data can move across.
- Gradual is smooth for customers, but takes longer, and the old system must stay available during the transition.
- Inactive users never migrate under the gradual approach, so decide in advance what to do with them.
Plan the cut-over
Test with a small group first. Prepare clear communications. Have a rollback plan. Watch error rates and support requests closely in the first days. Keep the old system in a read-only state for a while so you can compare records if disputes arise.
sequenceDiagram
participant C as Customer
participant N as New identity service
participant O as Old user database
C->>N: Sign in with existing credentials
N->>O: Check credentials
O->>N: Valid
N->>N: Create the customer record
N->>C: Signed in, no reset needed
Figure 17 shows why customers barely notice. They type the same credentials, the new service checks the old one in the background, and the customer is quietly moved over.
When a shop moves to a new building, it may carry stock over in a single weekend or gradually restock the new shelves as items sell. Either way, customers want to find what they came for.
18Getting Started: A Setup Roadmap
A sensible order of work saves you from rework later.
Decide your needs
List who your customers are, which sign-in methods they expect, what laws apply, and how many people you expect.
Create tenants
Choose names and regions, and set up separate tenants for development, test, and production.
Register applications and APIs
One registration per product and environment, with correct types and allowed return addresses.
Set up connections
Start with the database connection, add social or passwordless choices your audience wants.
Brand the hosted login
Add logo, colours, wording, and a custom domain.
Turn on protection
Enable bot detection, breached-password checks, brute-force protection, and appropriate multi-factor choices.
Add roles and custom steps
Only those you actually need, tested outside production.
Connect monitoring
Send logs somewhere you can search and alert on them.
Test, pilot, and launch
Run a pilot with a small group, then roll out gradually.
Common early traps
- Building in production because it was “just a quick test”.
- Forgetting to configure the return addresses for each environment.
- Leaving default email templates and senders unbranded, which looks untrustworthy.
- Using a shared mailbox sender that lands in spam folders.
- Skipping a custom domain until after customers have seen the default address.
Email deliverability
Sign-up verification and reset emails are part of your front door. If they land in spam, customers cannot finish signing up. Configure a proper sending service and authenticate your sending domain according to current email standards, so that mailbox providers trust your messages. Test with several mailbox providers.
flowchart LR
N["Needs"] --> T["Tenants"]
T --> A["Applications"]
A --> C["Connections"]
C --> B["Branding"]
B --> P["Protection"]
P --> X["Roles and steps"]
X --> M["Monitoring"]
M --> L["Pilot and launch"]
Figure 18 summarizes the roadmap. Each stage builds on the previous one, and skipping ahead usually leads to rework.
Building a house starts with plans, then foundations, then walls, then fittings. Painting before the walls exist is not a shortcut.
19Worked Examples in Plain Words
Three short stories show the pieces working together.
Example one: a first-time shopper
Priya visits an online clothing shop for the first time. She taps “Sign in with a social account”, approves a short request on her phone, and lands back on the shop, signed in. Behind the scenes, the shop’s application sent her to the hosted login page, which handed her to the social provider, which vouched for her, and returned a one-time code. The shop’s application traded the code for tokens, created a profile for her, and greeted her by name. A custom step noted that she was new and added a welcome-offer flag. She never typed a password, and the shop never saw one.
Example two: a suspicious midnight attempt
Later, someone tries to sign in to Priya’s account from a distant country using a password that is already known from an old, unrelated leak. Breached-password detection flags the password. The unusual location triggers an extra proof request, which the attacker cannot answer. The attempt is blocked, recorded in the logs, and Priya receives a notice that someone tried to get in. She changes her sign-in method to a passkey the next morning.
Example three: a business customer joins
A software company called Northwind Supplies signs up for a business edition of a product. Its administrator creates an organization, connects the company’s own corporate directory so employees sign in with work credentials, and invites colleagues. Each employee is automatically placed in the right role. Northwind’s data is separate from other businesses, because every token states which organization the person is acting for. When an employee leaves Northwind, removing them from the corporate directory ends their access to the product.
flowchart TD
E1["Shopper
social sign-in"] --> R1["Smooth entry,
new profile created"]
E2["Attacker
leaked password, odd location"] --> R2["Blocked, logged,
customer notified"]
E3["Business customer
corporate directory"] --> R3["Organization created,
members onboarded"]
Figure 19 sums up the stories. Convenience, protection, and business-to-business features all run through one service, which keeps the product team’s attention on its real work.
A well-run hotel treats a walk-in guest, a suspicious visitor, and a corporate booking differently, but all three pass through the same lobby managed by the same staff.
20Security Considerations
Customer identity is a prime target. Treat configuration as part of your security posture.
A strong platform can be undermined by weak configuration. Many real-world breaches involve a misconfigured setting, an over-powered key, or an overlooked test environment, not a flaw in the underlying service. Review security as part of your regular routine.
Protect the administrators
- Strong sign-in for dashboard users: require multi-factor authentication for everyone with access to the management console.
- Few administrators: grant the highest roles to as few people as practical.
- Individual accounts: avoid sharing logins, so actions can be traced to a person.
- Prompt removal: remove access immediately when someone leaves or changes role.
Protect secrets and keys
Server-side applications and machine programs hold secrets that prove their identity. Keep these in a proper secrets store, never in documents, chat messages, or public code. Rotate them on a schedule and immediately after any suspected exposure. Give each application its own secret so that one leak does not expose all.
Validate tokens properly
Your back-end must check every token it receives: that it is genuinely signed by your tenant, that it has not expired, that it was meant for this particular API, and that it carries the permission needed for the action. A back-end that trusts any token it is shown is open to forgery.
Restrict return addresses
Each application has a list of addresses where customers may be sent after sign-in. Keep the list tight and exact. Wildcards or stale entries can let an attacker redirect customers, along with their codes or tokens, to a hostile site.
Privacy and data protection
Customer identity data is personal data. Collect only what you need, tell customers how it is used, honour deletion and access requests, and choose the tenant region with legal duties in mind. Involve your privacy and legal advisers early, because mistakes here are costly and public.
flowchart LR
SEC["Security posture"] --> A1["Protect administrators"]
SEC --> A2["Protect secrets"]
SEC --> A3["Validate tokens"]
SEC --> A4["Tight return addresses"]
SEC --> A5["Privacy by design"]
SEC --> A6["Monitor and respond"]
Figure 20 offers a checklist of areas. Review each on a regular rhythm, not only at launch, because configuration drifts over time.
A bank with a perfect vault still fails if staff leave the key under the mat. The strongest lock depends on how people use it.
Periodic security reviews
Put a security review on the calendar every quarter. Check who holds administrator roles, which applications and secrets exist, whether return address lists still make sense, what defences are enabled, and how recent incidents were handled. Write down findings and assign owners. A short, regular review catches drift long before it becomes an incident.
21Monitoring, Logging, and Metrics
You cannot protect or improve what you cannot see. Logs are the camera footage of your front door.
The service records events: successful and failed sign-ins, sign-ups, password changes, blocked attempts, factor challenges, and configuration changes. These logs are available in the dashboard for a limited time, so for long-term analysis you should send them to a system you control, where you can search, chart, and alert.
What to watch
- Failed sign-in rates: sudden jumps may indicate an attack or a broken change.
- Sign-up volume: abnormal surges often mean bots.
- Blocked attempts: shows your defences working, or overworking.
- Multi-factor completion rates: low numbers signal friction.
- Reset email volume: high numbers may mean confusing forms or an attack.
- Configuration changes: who changed what, and when.
- Custom step errors and slowness: these directly affect sign-in.
Business metrics too
Identity data is also a window into your product’s health. How many visitors start sign-up and how many finish? Which sign-in method do people prefer? Where do they abandon? Treat these as product questions, not only security questions.
Alerts that mean something
Choose a few alerts that truly require action, with a named responder for each. An inbox full of ignored alerts is as bad as none at all. Review thresholds after every incident.
flowchart LR
EV["Events in the service"] --> ST["Log stream"]
ST --> SY["Your log system"]
SY --> DS["Dashboards"]
SY --> AL["Alerts"]
AL --> OC["On-call responder"]
DS --> RV["Regular review"]
Figure 21 shows the path from event to action. Logs leave the service, land in a place you control, and feed both live alerts and calm periodic reviews.
A shop owner reviews the till, the stock, and the camera footage. Each shows a different side of the business, and trouble usually appears in at least one.
22Testing and Validation
Sign-in has many paths. Test all of them before customers do.
Because sign-in has so many branches, such as new versus returning customers, different connections, factor choices, errors, and device types, testing must be systematic. Use your development and test tenants, create realistic test accounts, and walk through each path by hand and, where possible, with automated checks.
A test checklist
- New customer sign-up with each connection type.
- Returning customer sign-in on web and mobile.
- Forgotten password and reset email delivery.
- Enrolling and using each multi-factor option, including losing the device.
- Sign-out, including whether the customer is truly signed out everywhere intended.
- Expired tokens and quiet renewal.
- Blocked and suspicious attempts.
- Custom step failure: what does the customer see when a step breaks?
- Accessibility with keyboard only and with a screen reader.
- Different languages and screen sizes.
Load and spike testing
Customer traffic is unpredictable. A marketing email or a sale can multiply sign-ins within minutes. Plan for peaks, understand any rate limits that apply to your plan, and coordinate large events with the provider where appropriate. Never run heavy load tests against production without agreement.
Test the unhappy paths
Most testing proves that things work when everything goes right. The failures customers remember occur on unhappy paths: an email that never arrives, a code that expires, a phone that is lost. Test these deliberately and make sure the screens give clear next steps.
flowchart TD
CH["Change prepared"] --> D1["Test in development tenant"]
D1 --> D2["Test in staging tenant"]
D2 --> PL["Small pilot in production"]
PL --> FR["Full rollout"]
FR --> WT["Watch logs closely"]
Figure 22 shows a cautious path. Each stage catches a different kind of problem, and the final watching period catches anything the earlier ones missed.
A new bridge is tested with weights, then with light traffic, then with heavy traffic. Nobody opens it to the rush hour on day one.
23Operating Model and Ownership
Technology works only when people own it. Decide early who does what.
Customer identity touches many teams: product, engineering, security, support, legal, and marketing. Without clear ownership, important tasks fall between chairs. Name an owner for each area, and set a regular rhythm of review.
| Area | Typical owner | Key duties |
|---|---|---|
| Overall platform | Identity or platform team | Configuration, upgrades, standards, documentation |
| Sign-in experience | Product and design | Branding, wording, conversion, accessibility |
| Security settings | Security team | Defences, reviews, incident response |
| Custom steps | Engineering | Writing, reviewing, testing, and maintaining |
| Customer support | Support team | Recovery help, feedback, common problems |
| Privacy and compliance | Legal and privacy | Data handling, requests, regional rules |
| Vendor relationship | Procurement and platform lead | Contracts, support cases, roadmap conversations |
Change management
Treat configuration changes like code changes. Record who requested a change, who approved it, when it was made, and why. Roll out in stages. Keep a written record of the intended settings, so that if someone accidentally changes one, the difference is noticed. Where possible, manage settings through repeatable, reviewed procedures rather than manual clicks.
Support readiness
The support team meets customer identity problems every day. Equip them with clear guides, safe recovery procedures that verify identity properly, and a quick route to the platform team. Attackers often target support staff with persuasive stories, so support rules for resetting access must be firm.
flowchart TD
PT["Platform team"] --> CF["Configuration and standards"]
PD["Product team"] --> UX["Experience and conversion"]
SE["Security team"] --> DF["Defences and response"]
SU["Support team"] --> CR["Customer recovery"]
LG["Legal and privacy"] --> CO["Compliance"]
CF --> GOAL["Reliable, safe, friendly front door"]
UX --> GOAL
DF --> GOAL
CR --> GOAL
CO --> GOAL
Figure 23 reminds us that the front door belongs to everyone. Shared goals, clear roles, and a steady review rhythm keep it in good order.
A hospital runs because doctors, nurses, cleaners, and administrators each know their duties. No one expects the surgeon to mop the floor.
Planning for growth and change
Your audience will grow, your product will change, and the provider will release new features. Assign someone to follow the provider’s announcements, evaluate which new features help, and schedule changes sensibly. Review your setup once a year with fresh eyes, asking whether each customization still earns its place. Removing outdated rules is as valuable as adding new ones.
24Advantages, Disadvantages, and Trade-offs
A managed customer identity service has real benefits and real costs. Weigh both honestly.
Advantages
- Faster time to launch than building sign-in yourself
- Security expertise and ongoing updates maintained by specialists
- Many sign-in methods supported side by side
- Attack protection and multi-factor options built in
- Scales with sudden spikes in traffic
- Support for business customers through organizations
- Extensibility through custom steps
Disadvantages and costs
- Recurring cost that grows with your audience
- Dependence on a vendor for a critical function
- Limits and conventions you must design within
- Migration effort if you ever change providers
- Customization has boundaries
- Requires skill to configure well; managed does not mean automatic
Key trade-offs
- Build versus buy: building gives control but costs time and ongoing security work. Buying saves effort but ties you to a vendor.
- Hosted versus embedded login: hosted pages are safer and simpler; fully embedded forms give more control but more responsibility.
- Security versus friction: every extra check reduces risk and may lose customers.
- Customization versus upgradeability: heavy customization can complicate later improvements.
- Rich profiles versus lean profiles: storing more convenience data increases privacy duties.
quadrantChart
title Choices by effort and value
x-axis Low effort --> High effort
y-axis Low value --> High value
quadrant-1 Plan carefully
quadrant-2 Do first
quadrant-3 Skip for now
quadrant-4 Reconsider
Hosted login: [0.2, 0.9]
Bot detection: [0.25, 0.8]
Multi-factor: [0.4, 0.85]
Custom domain: [0.35, 0.7]
Passkeys: [0.55, 0.8]
Heavy login customization: [0.85, 0.4]
Figure 24 ranks sample decisions. Hosted login, protection, and multi-factor deliver much value for modest effort. Heavy customization of the login page costs the most and should earn its place.
Hiring a professional security company costs money and ties you to a contract, but it beats training your own guards from nothing for most small shops.
25Design Patterns
Patterns are proven shapes of good practice. Each solves a recurring problem in customer identity.
Hosted login for every application
RecommendedProblem
Login forms scattered across applications multiply risk and inconsistency.
Pattern
Send all applications to the hosted login page and let it handle credentials and factors.
Result
One place to secure, brand, and improve, plus easy single sign-on across products.
Separate tenants per stage
RecommendedProblem
Experiments in one shared tenant can lock out real customers.
Pattern
Keep distinct development, test, and production tenants and promote changes through them.
Result
Mistakes are caught early and production stays calm.
Lean profile, rich business database
RecommendedProblem
Identity records grow into overloaded customer databases.
Pattern
Store only identity facts and trusted flags in the identity record, and link to your own database by stable identifier.
Result
Faster sign-in, simpler privacy handling, and cleaner responsibilities.
Adaptive multi-factor prompts
RecommendedProblem
Always asking for extra proof annoys customers; never asking leaves accounts exposed.
Pattern
Ask for extra proof when risk signals appear, such as new devices or unusual places, and encourage phishing-resistant options like passkeys.
Result
Better balance of safety and smoothness.
Organization per business customer
RecommendedProblem
Business customers need their own members, roles, and sign-in rules inside one product.
Pattern
Model each business as an organization, let its administrators manage members and connect their own directory.
Result
Scalable onboarding of business customers with clear data separation.
Coarse roles in tokens, fine rules in the product
RecommendedProblem
Complex business rules do not belong in the identity service.
Pattern
Include simple roles in tokens and let your own back-end decide detailed access using business data.
Result
Stable identity configuration and flexible business logic.
Logs streamed to your own system
RecommendedProblem
Built-in logs are retained for limited time and are hard to correlate with other data.
Pattern
Stream logs to a system you control, with dashboards and alerts.
Result
Long-term history, faster investigation, and shared visibility.
flowchart LR
DP1["Hosted login"] --> OUT["Safe, friendly,
maintainable front door"]
DP2["Tenants per stage"] --> OUT
DP3["Lean profile"] --> OUT
DP4["Adaptive prompts"] --> OUT
DP5["Organizations"] --> OUT
DP6["Coarse roles in tokens"] --> OUT
DP7["Streamed logs"] --> OUT
Figure 25 shows that the patterns reinforce each other. None requires heroic skill, but together they keep growth manageable.
26Anti-Patterns
These habits look sensible but cause trouble. Recognize them early.
Building login forms into every app
AvoidWhat happens
Each team builds its own sign-in screens that handle passwords directly.
Why it hurts
Inconsistent security, duplicated effort, and no easy single sign-on.
Instead
Use the hosted login for all applications.
One tenant for everything
AvoidWhat happens
Development, testing, and production share a single space.
Why it hurts
Experiments reach real customers, and test data pollutes real data.
Instead
Separate tenants for each stage.
Secrets in public places
AvoidWhat happens
Application secrets are pasted into chats, documents, or code that others can see.
Why it hurts
Anyone who finds them can impersonate your application.
Instead
Use a secrets store and rotate regularly.
Treating the identity record as a general database
AvoidWhat happens
Every customer detail is stuffed into profile metadata.
Why it hurts
Slow, bloated tokens, privacy risk, and awkward updates.
Instead
Keep it lean and link to your own database.
Auto-merging accounts on unverified email
AvoidWhat happens
Accounts are linked automatically because email addresses look the same.
Why it hurts
An attacker can claim someone’s address and take over their account.
Instead
Link only after proof of control over both accounts.
Heavy, slow custom steps
AvoidWhat happens
Custom steps call many outside systems during sign-in.
Why it hurts
Sign-in becomes slow or fails whenever another system is slow.
Instead
Keep steps short, minimize outside calls, and plan for failure.
flowchart TD
A1["Forms in every app"] --> BAD["Fragile, risky front door"]
A2["One tenant for all"] --> BAD
A3["Secrets in public"] --> BAD
A4["Overloaded profiles"] --> BAD
A5["Auto-merging accounts"] --> BAD
A6["Heavy custom steps"] --> BAD
Figure 26 gathers the habits to avoid. Compare your own setup against this list from time to time.
27Best Practices and Common Mistakes
A short checklist of what to do and what to avoid.
Best practices
- Use the hosted login page and a custom domain from the start.
- Keep separate tenants for development, test, and production.
- Register each application and environment separately, with the correct type.
- Turn on bot detection, breached-password checks, and brute-force protection.
- Offer phishing-resistant options such as passkeys, and use adaptive prompts for extra proof.
- Verify email addresses and link accounts only with proof.
- Keep profiles lean and link to your own database.
- Validate every token fully in your back-end.
- Keep return address lists exact and tight.
- Protect administrators with strong sign-in and keep their number small.
- Stream logs to your own system and alert on the few signals that matter.
- Treat configuration changes as reviewed, recorded, staged changes.
- Confirm every plan-specific detail in the official documentation.
Common mistakes
- Testing only the happy path.
- Leaving default emails and senders unbranded or landing in spam.
- Choosing the wrong application type for a public app.
- Forgetting that signing out of the app may not sign out of the service.
- Making tokens carry too much information.
- Letting defences lock out honest customers without an easy recovery path.
- Ignoring customers who cannot use the common sign-in method, such as people without a smartphone.
- Launching without a plan for growth spikes.
flowchart LR
PL["Plan"] --> BU["Build and configure"]
BU --> TE["Test"]
TE --> LA["Launch gradually"]
LA --> MO["Monitor"]
MO --> IM["Improve"]
IM --> PL
Figure 27 reminds us that identity work never ends. Customers change, attackers change, and your product changes. A steady cycle keeps the front door in good shape.
28Real-World Scenarios
Four fictional companies show the ideas in use. All names and details are invented for teaching.
Marigold Market: a fast-growing online shop
Marigold Market sells homewares and sees heavy traffic during seasonal sales. Early on, it built its own login and suffered a wave of fake sign-ups that abused welcome offers. Moving to a managed service, the team enabled hosted login, social and passwordless options, bot detection, and a custom domain. Sign-up completion improved because customers could use a social account, and fake sign-ups fell sharply. Before each major sale, the team reviews expected traffic and coordinates with the provider.
Pinewood Health: protecting sensitive accounts
Pinewood runs a patient portal. Privacy is paramount, so the team chose a regional tenant that matches local rules, required multi-factor authentication for every account, encouraged passkeys, and kept profiles lean with medical data held only in its own protected systems. Support staff follow a strict identity-verification routine before any account recovery. A quarterly review checks administrator access and logs of configuration changes.
Quillfeather Software: selling to businesses
Quillfeather offers a team-planning tool to companies. Each customer company is modelled as an organization. Large customers connect their own corporate directories so employees sign in with work credentials, and company administrators invite colleagues and assign roles themselves. A custom step adds the organization identifier to tokens so the product shows only the right company’s data. The sales team can now onboard a new business in an afternoon rather than a week.
Tidewater Media: migrating a large audience
Tidewater has a million subscribers in an ageing user database. A bulk import was impossible because password data could not be moved in a compatible form, so the team used gradual migration. Subscribers sign in as usual, and the new service checks the old database in the background and creates the account. Inactive subscribers are handled with a reset campaign after several months. The old database stays read-only for a period for comparison. Customers barely noticed the change.
flowchart LR
M["Marigold
growth and bot defence"] --> LESSON["Common thread:
design the front door deliberately"]
P["Pinewood
privacy and strong proof"] --> LESSON
Q["Quillfeather
business customers"] --> LESSON
T["Tidewater
careful migration"] --> LESSON
Figure 28 shows each company’s focus. Different needs produced different configurations, but all began with understanding their audience and risks.
29Frequently Asked Questions
Thirty short answers to questions beginners often ask. Always confirm specifics in the official documentation and your plan.
The set of tools that let the public create accounts, sign in, recover access, and be protected when using your product.
Workforce identity manages employees accessing internal tools. Customer identity manages the public using your products, at much larger scale and with a focus on conversion and abuse prevention.
Okta’s customer identity offering grew from the Auth0 platform, which Okta acquired. Names and packaging have evolved, so check the current documentation for how they are presented.
Your private, self-contained space in the service holding your settings, applications, users, and logs.
At least separate ones for development, test, and production, so changes are proven before reaching customers.
It affects speed and where personal data is stored, which can be a legal matter. Changing regions later may be hard.
A record that represents one of your products, telling the service who is asking for sign-in and where customers may be sent afterwards.
Some applications can keep secrets safely and some cannot, so the safe sign-in method differs.
A source of identities, such as your own database of accounts, a social provider, a passwordless method, or a company directory.
The hosted sign-in page run by the service, which you can brand, so that applications never handle passwords.
It is safer, receives new protections everywhere at once, and enables single sign-on across products.
A small, digitally signed message that proves who someone is or what they may do, and can be checked without asking the service again.
An identity token says who signed in, an access token carries permission to call a protected service, and a refresh token quietly renews the others.
So that a stolen token stops working soon, limiting the harm.
A session is the period of being signed in, remembered by the service or application. Tokens are the signed proofs used during that period.
Not necessarily. The service may still remember them. Decide what sign-out means in your product and test it.
Proving identity with more than one kind of evidence, such as a password plus a device, so a stolen password alone is not enough.
Device-held, phishing-resistant options such as security keys and passkeys are strongest. Text messages are the weakest common option, though still better than nothing.
A sign-in method using a secret held in the person’s device, unlocked with a fingerprint, face, or device code. There is no password to steal.
A small piece of custom logic that runs at a chosen moment in the sign-in journey, such as before a sign-up or before tokens are issued.
Yes. They run in the middle of sign-in, so keep them short, avoid unnecessary outside calls, and plan for failure.
Attackers trying large lists of stolen username and password pairs from other breaches, hoping customers reused credentials.
A defence that warns or blocks when a customer uses a password known from public leaks.
A grouping inside your tenant representing one business customer, with its own members, roles, and sign-in options.
A permission is one allowed action. A role is a named bundle of permissions assigned to people.
By bulk import where password data can move compatibly, by gradual migration at first sign-in, or by a combination of both.
Resets and account linking depend on the person controlling the address. Unverified addresses are just claims.
Built-in retention is limited and depends on your plan, so stream logs to your own system for long-term needs. Confirm current retention in the documentation.
It is shared. The provider secures its platform. You are responsible for configuration, application design, back-end protection, and response.
In your dashboard, the official Okta and Auth0 documentation, your contract, and conversations with your account team.
30Summary and Key Takeaways
A good front door welcomes customers, stops attackers, and quietly scales. Customer identity is how you build it.
You began this guide knowing little about customer identity. You now understand its vocabulary, how tenants, applications, connections, and the hosted login fit together, how tokens and sessions carry proof, how multi-factor, passwordless, and passkeys raise safety, how organizations support business customers, and how custom steps, attack protection, roles, and logs complete the picture. You also know the patterns that help, the anti-patterns that hurt, and the operating habits that keep the system healthy.
Treat the work as a cycle of planning, building, testing, launching gradually, monitoring, and improving. Keep profiles lean, keep secrets safe, keep changes staged, and keep customers’ experience at the centre. Confirm every specific detail against the current official documentation and your plan, since names and limits change while the ideas stay steady.
Key Takeaways
- Customer identity is your product’s front door: it must be welcoming to real customers and hostile to attackers.
- Use the hosted login page and a custom domain so applications never touch passwords and every product benefits from the same protections.
- Keep separate tenants for development, test, and production, and register each application and environment separately with the right type.
- Offer the sign-in methods your audience wants, push toward passkeys and adaptive multi-factor, and turn on bot, breached-password, and brute-force defences.
- Keep identity profiles lean, use organizations for business customers, put coarse roles in tokens, and decide fine access in your own back-end after fully validating every token.
- Treat custom steps and configuration like code: reviewed, tested, staged, and recorded, and stream logs to your own system with a few meaningful alerts.
- Security is shared between you and the provider, so review administrators, secrets, return addresses, and privacy duties regularly, and confirm plan-specific details in official sources.