Step-Up Authentication in Okta
A beginner-friendly guide to asking for stronger or fresher proof of identity only at the moments that matter: how Okta decides, how apps can request it, how to design it so people accept it, and how to run it safely.
Most people sign in once in the morning and expect to work all day without interruption. That is a fair expectation for reading a team calendar or checking a chat message. It is not a fair expectation for approving a large payment, changing a bank account number, or promoting someone to administrator. Those actions are different, because a mistake or an attack there can cost real money or expose real data.
Step-up authentication is the idea that fits both worlds. People get a smooth day for ordinary work, and the system quietly asks for a stronger or fresher proof of identity at the few moments that carry real risk. Okta supports this idea in several ways, and this guide explains each of them from the ground up. No earlier knowledge is needed. By the end you will know what step-up is, how Okta decides when to use it, how an app can request it, and how to avoid the mistakes that either annoy users or leave gaps for attackers.
1What Is Step-Up Authentication?
It means raising the bar for proof of identity in the middle of a session, when the situation calls for it.
Let us start with the words. Okta is an identity provider, which is a service that proves who people are to many apps at once. Authentication is the act of proving who you are. A factor is one kind of proof, such as a password, a prompt on a phone, or a hardware key. Multi-factor authentication (MFA) means asking for two or more different kinds of proof.
A session is the period of time during which Okta remembers that you already proved who you are, so it does not ask again at every click. Step-up authentication means that, in the middle of a session, a system asks for a stronger proof, a fresher proof, or both, before it allows a particular sensitive thing. The user has already signed in. The system is simply saying, “For this next step, I need you to prove it again, and maybe in a stronger way.”
Think of an office building. You show your badge at the front door in the morning, and that lets you walk through the lobby, the corridors, and the cafeteria. But the server room has a second door that wants a fingerprint, and the finance vault wants a fingerprint plus a manager’s code. Nobody calls that unfair. It is simply a higher bar for places that matter more. Step-up authentication is that extra door, applied to apps and actions.
Strength and freshness
These two words come up in every later chapter, so it helps to be clear about them now. Strength is how hard the proof is to fake. A password alone is weak, a prompt on a phone is stronger, and a hardware security key is stronger still. Freshness, also called recency, is how recently the proof was given. A proof from eight hours ago is stale. A proof from thirty seconds ago is fresh. Step-up can demand either one, or both together.
2The Words You Need to Know
A short vocabulary will make every later chapter easier to read.
Step-up has its own small language. Learn these terms once, and you will recognize them in Okta screens, documentation, and developer conversations.
| Term | Plain meaning | Why it matters here |
|---|---|---|
| Assurance level | How confident the system is that the person is who they claim to be | Step-up raises this level |
| Authentication context | A label for the strength of the sign-in that happened | Apps can ask for a certain context |
| Re-authentication | Asking the user to prove identity again | The simplest form of step-up |
| Authentication policy | A set of rules about how users prove identity to an app | The main place step-up rules live in Okta |
| Rule | One condition and its result inside a policy | Rules choose who gets stricter treatment |
| Phishing-resistant factor | A factor that cannot be tricked by a fake website | The top of the strength ladder |
| User verification | A check on the device itself, such as a fingerprint or PIN | Proves a person, not just a device, is present |
| Network zone | A named group of network locations | One signal used to decide when to step up |
| OpenID Connect (OIDC) | A modern sign-in standard used by many apps | Lets an app ask Okta for step-up |
| Token | A signed package of facts about a sign-in | Carries the proof of strength and time back to the app |
If you remember only two ideas from this table, remember authentication policy and token. Policies are how an administrator forces step-up from the Okta side, and tokens are how an app checks that step-up really happened.
3Why One Sign-In Is Not Enough
The same session cannot be equally trustworthy for every task. That is the problem step-up solves.
Single sign-on is a wonderful convenience. A person proves who they are once, and Okta vouches for them to many apps. But convenience has a hidden cost. The longer a session lasts and the more apps it reaches, the more damage someone can do if they get hold of it. A stolen session, an unlocked laptop left in a cafe, or a hijacked browser can all give an attacker everything that the original sign-in could reach.
Stale sessions
A person who signed in at nine o’clock may have walked away from the screen by two. The old proof says nothing about who is at the keyboard now.
Uneven stakes
Reading a document and wiring money are both just clicks, yet one can cause far more harm than the other.
Weak first sign-in
Someone may have signed in with a convenient factor that is fine for email but not strong enough for payroll.
Changing context
A session started on the office network may now be used from a different country, but the original sign-in cannot notice that on its own.
Two bad answers
Without step-up, a company usually ends up with one of two poor choices. The first is to make everything strict: every app demands a strong factor at every click. People grow tired, work slows down, and they start looking for shortcuts. The second is to make everything loose: one easy sign-in for the whole day. This is pleasant until the day it is abused.
Step-up offers a third answer. Keep the ordinary path easy and add friction only where the stakes are high. This is a better deal for both security teams and users, and it is why the idea has become a standard part of modern identity design.
A hospital does not lock every cupboard with a fingerprint reader. Bandages sit on an open shelf, while controlled medicines live in a locked cabinet that logs every opening. Matching the lock to the contents is exactly what step-up does for digital actions.
4Assurance Levels: A Ladder From Weak to Strong
Thinking in levels makes step-up much easier to design and explain.
An assurance level is a measure of how sure a system is about who is on the other end. Higher levels need stronger proof. Security standards bodies publish formal level definitions, and Okta has its own named levels that apps and policies can use. For teaching purposes, it helps to picture a simple ladder. The labels below are teaching labels used in this guide, and Okta’s own names appear later.
flowchart LR L0["Level 0: Existing session only"] --> L1["Level 1: Password or one factor"] L1 --> L2["Level 2: Two factors"] L2 --> L3["Level 3: Phishing-resistant factor"] L3 --> L4["Level 4: Hardware-protected with user verification"]
| Level | What the user did | Good enough for |
|---|---|---|
| 0 | Nothing new. The earlier session is simply reused. | Reading low-risk pages |
| 1 | Gave a password or a single factor | Everyday internal tools |
| 2 | Gave two different kinds of proof | Most business apps and customer data |
| 3 | Used a factor that a fake website cannot capture | Finance, administration, source code |
| 4 | Used a hardware-protected key with a fingerprint or PIN | The most sensitive actions |
Picture the access levels at an airport. Anyone can walk into the public hall. Ticketed passengers pass the security line. Staff with badges enter the baggage area. Only a very small group, with checked identity and a second person present, enters the area where the aircraft are fueled. Each step up the ladder asks for more and admits fewer people.
A level is about the sign-in, not the person
One idea trips up many beginners. A level describes how a particular sign-in happened, not how trusted the person is. The same employee may reach level 1 on Monday morning with a quick prompt, then reach level 3 on Monday afternoon after touching a security key. The level belongs to the proof, not to the human. This is why one person can be asked to step up again and again, depending on the action.
5Architecture and Components
Several parts work together every time a person is asked to step up.
The picture is simple. A user works in an app. The app, or Okta’s own rules, decides that more proof is needed. The user is sent to Okta, completes the stronger proof, and returns to the app with a signed statement of what just happened. Each part of this has a clear job.
| Component | What it is | What it does for step-up |
|---|---|---|
| Protected app | The app or action that needs more proof | Detects a sensitive moment and asks for step-up |
| Okta sign-in and policy engine | The part of Okta that decides how to authenticate | Compares the current session with what the policy requires |
| Authentication policy | Rules attached to an app | Define how strong and how recent the proof must be |
| Session record | Okta’s memory of the current sign-in | Stores how the user signed in and when |
| Enrolled authenticators | The factors the user has registered | Decide whether the user can meet a higher level at all |
| Context signals | Network, device, and behavior information | Help decide if extra proof is needed |
| Token | A signed statement returned to the app | Proves the level and the time of the latest sign-in |
| System Log | Okta’s activity record | Records the step-up event for review |
flowchart LR U["User and Browser"] --> A["Protected App"] A -->|"Request with required level and recency"| O["Okta Sign-In and Policy Engine"] O --> P["Authentication Policy and Rules"] O --> S["Session and Last Sign-In Time"] O --> F["Enrolled Authenticators"] O -->|"Token with level and time claims"| A O --> L["System Log"]
Imagine a bank branch. The teller, who is the app, is happy to help with small tasks. When a customer asks for a large transfer, the teller calls the manager, who is Okta, and the manager checks the customer’s identity with a stricter procedure, using the branch rulebook, which is the policy. The manager then signs a slip that the teller can trust. The teller never needs to know the details of the check, only that the slip is genuine.
Notice that the app does not run the stronger check itself. It delegates the check to Okta and reads the result. This keeps the sensitive work, such as handling factors and hardware keys, in one carefully protected place.
6Two Ways to Trigger Step-Up: Policy-Driven and App-Driven
Step-up can start from the Okta side or from the app side. Many companies use both.
There are two main starting points. In policy-driven step-up, an Okta administrator writes rules for an app, and Okta applies them whenever someone opens it. The app does not need to be modified. In app-driven step-up, the app itself decides that a certain action is sensitive and asks Okta for a higher level at that moment. This needs a little developer work, but it gives fine control, down to a single button.
| Trigger | Who decides | When it happens | Best for |
|---|---|---|---|
| Policy-driven | The Okta administrator | When a person opens or signs in to the app | Whole apps that are sensitive, such as payroll or an admin console |
| App-driven | The app’s developers | When a person starts a specific sensitive action inside the app | Actions such as large payments, data exports, or changing security settings |
| Signal-driven | Okta’s rules reacting to context | When the situation looks unusual, such as a new device | Catching risky moments without annoying people on normal days |
Policy-driven
Simple, no code needed, and applies to an entire app. The downside is that it cannot tell a harmless click from a dangerous one inside the app.
App-driven
Precise and flexible, and it matches the way people actually work. It does need the app to speak a suitable sign-in standard and to be built carefully.
Policy-driven step-up is a guard at the door of a whole department who checks everybody entering. App-driven step-up is a lock on one particular cabinet inside the department, which opens only for a person who proves themselves right then. A thoughtful building has both.
The next chapters take each trigger in turn, starting with the one that needs no code at all.
7Policy-Driven Step-Up: Authentication Policies
An authentication policy is the rulebook that Okta reads each time someone opens a protected app.
In Okta Identity Engine, each app is attached to exactly one authentication policy. Many apps can share the same policy, which keeps things tidy. Inside a policy sits an ordered list of rules. Okta reads the rules from the top, finds the first rule whose conditions match the sign-in, and applies it. At the bottom sits a catch-all rule that handles everyone who matched nothing above. Older Okta setups use similar ideas under the name sign-on policies, and the screens differ, but the thinking is the same.
What a rule contains
| Part of a rule | Plain meaning | Example |
|---|---|---|
| Conditions | Who and what the rule applies to | Users in the Finance group, on an unmanaged device, from outside the office network |
| Required proof | How strong the sign-in must be | Two factors, or a phishing-resistant factor |
| Re-authentication frequency | How fresh the proof must be | Every sign-in, or after a set number of minutes, hours, or days |
| Access result | Whether access is allowed or denied | Allow with the stated proof, or deny entirely |
The re-authentication frequency setting is the heart of freshness. It tells Okta to ask for proof again even if the person still has a perfectly good session. For a sensitive app you might choose to ask at every sign-in attempt. For a medium-risk app you might choose to ask after a number of hours. Exact option names change between releases, so check what your Okta version shows.
Think of a library with different reading rooms. The rulebook at the desk says: “Members may enter the main hall with a card. The rare-books room needs the card and a staff escort. If you were in the rare-books room more than an hour ago, you must check in again.” Each line is a rule, and the freshness rule is the one-hour limit.
A simple three-rule policy
Imagine a payroll app. The first rule says that people in the Payroll group, on a managed device, on the office network, need two factors and a fresh proof every few hours. The second rule says that people in the Payroll group anywhere else need a phishing-resistant factor and a fresh proof at every sign-in. The catch-all rule at the bottom denies everyone else. Three short rules express a whole security stance.
Rule order matters. Okta uses the first rule that matches. If a broad rule sits above a narrow one, the narrow rule never fires. Always place the most specific rules at the top, and test with real accounts from each group.
8Factor Constraints: Choosing How Strong the Proof Must Be
A rule can ask for specific kinds of proof, not only a number of factors.
Counting factors is only the start. A thoughtful rule also says which kind of factor will be accepted. In Okta’s rule settings you will find choices that describe the kinds of proof, grouped by the three families of evidence. The knowledge family covers things a person knows, such as a password. The possession family covers things a person has, such as a phone or a hardware key. The inherence family covers things a person is, such as a fingerprint on a device.
| Constraint idea | What it requires | Why a team would choose it |
|---|---|---|
| Any one factor | A single acceptable proof of any allowed type | Low-risk apps where speed matters |
| Password plus another factor | A knowledge proof and a different proof | The classic two-factor setup for most apps |
| Any two factors | Two different proofs in any combination | Passwordless setups with two possession or inherence proofs |
| Phishing-resistant possession | A factor tied to the real website address | High-value apps where phishing is a real danger |
| Hardware-protected possession | A key kept in protected hardware on the device | Admin access and sensitive finance actions |
| User verification required | A fingerprint, face scan, or PIN on the device | Making sure a person, not only a device, is present |
Why user verification matters
A phone or a security key proves that a device is present. It does not prove that the rightful owner is holding it. User verification closes that gap by asking for a quick local check, such as a fingerprint, face unlock, or device PIN, before the device answers. If a thief steals an unlocked phone or a key, they still cannot pass the check. This is why user verification is a favorite setting for step-up rules.
A credit card proves you own a card. A card plus a PIN proves you also know a secret. User verification is the PIN of the modern device world: the card, which is the device, is useless until the owner confirms it is really them.
The stronger the constraint, the more careful you must be about enrollment. A rule that requires a phishing-resistant factor will block anyone who has not registered one. Plan that registration ahead of time, as described in a later chapter.
9App-Driven Step-Up With OpenID Connect
An app can ask Okta for a stronger or fresher sign-in at the exact moment it needs one.
OpenID Connect (OIDC) is a sign-in standard built on top of OAuth 2.0. In an OIDC sign-in, the app sends the user to Okta with a request, Okta authenticates the user, and then Okta hands back an ID token, which is a small signed package of facts about the sign-in. The request can carry extra hints that ask for step-up. Two of these hints matter most.
Authentication context request
The app asks for a named authentication context, which is a label for how strong the sign-in must be. Okta defines values for one-factor, two-factor, and phishing-resistant levels.
Maximum age
The app says how many seconds old the last sign-in may be. If the user’s last proof is older than that, Okta must ask again.
Okta’s named levels
In Okta Identity Engine, an app can request one of several named authentication contexts. The table below lists the ones most often used. Exact values and availability can change, so confirm them against current Okta documentation before building.
| Requested value | Plain meaning |
|---|---|
urn:okta:loa:1fa:any | Any single-factor sign-in is enough |
urn:okta:loa:1fa:pwd | The single factor must be a password |
urn:okta:loa:2fa:any | Two factors are required |
urn:okta:loa:2fa:any:ifpossible | Two factors if the user can, otherwise fall back gracefully |
phr | A phishing-resistant sign-in is required |
phrh | A phishing-resistant, hardware-protected sign-in is required |
sequenceDiagram autonumber participant U as User participant A as Protected App participant O as Okta U->>A: Open the normal page A-->>U: Show the page with an ordinary session U->>A: Start a sensitive action A->>A: Check how strong and how recent the sign-in was A-->>U: Redirect to Okta asking for a higher level and a recent sign-in U->>O: Arrive at Okta with an existing session O->>O: Compare the session with the requested level O-->>U: Ask for the stronger proof U->>O: Complete the stronger proof O-->>U: Return a code to the app U->>A: Deliver the code A->>O: Exchange the code for tokens O-->>A: ID token with level and time claims A->>A: Verify the claims, then allow the action
Reading the flow
The user is already working in the app with an ordinary session. When they click something sensitive, the app checks the strength and age of the sign-in it already knows about. If either is not good enough, it redirects the user to Okta and asks for a higher level, a fresher proof, or both. Okta compares the user’s current session with the request. If the session already satisfies it, Okta can answer immediately with no prompt. If not, Okta asks for the stronger proof, and only then returns a code. The app swaps that code for tokens by speaking directly to Okta, and finally checks the claims in the new token before it allows the action.
It is like a clerk who says, “I need the manager to sign off on this.” The customer is sent to the manager’s desk, the manager checks their identity more carefully, and a signed slip comes back to the clerk. The clerk looks at the slip, checks the signature and the time written on it, and only then completes the transaction.
10Reading the Result: Claims in the ID Token
Asking for step-up is only half the job. The app must also check that it really happened.
When Okta returns an ID token, the token contains claims, which are individual facts packaged inside it. Three claims are especially useful for step-up.
| Claim | Plain meaning | How the app uses it |
|---|---|---|
| Authentication context (acr) | The level of the sign-in that took place | Confirms that the strength requested was actually reached |
| Authentication methods (amr) | A list of the kinds of proof used, such as password or hardware key | Gives detail for audit and for finer decisions |
| Authentication time (auth_time) | When the user last proved their identity | Confirms that the proof is fresh enough |
Why checking matters
It is easy to assume that if the user came back from Okta, all is well. That assumption is dangerous. A user, or an attacker, may be able to change the request on its way, removing the stronger-level hint. The app must therefore look at the token that comes back and confirm three things: the signature is valid, the level meets what the app needed, and the time is recent enough. If any check fails, the app must refuse the action, no matter how the user arrived.
Never trust the redirect. Trust only the signed token, and check it against what you asked for. An app that sends a request for a higher level but never verifies the answer has the look of step-up without any of the safety.
A shop that asks to see a photo ID for an age-restricted purchase has to actually look at the ID. If the clerk just says “please show me your ID” and then rings up the sale without looking, nothing has been checked. The look is the verification step.
Be careful with the level you accept
Apps should also decide, ahead of time, which levels they will accept for each action. A payment approval might need phishing-resistant proof from the last five minutes. A profile edit might accept two factors from the last hour. Writing these rules down as a short table, kept next to the code, helps both developers and security reviewers see at a glance what protects what.
11SAML Apps and Step-Up
Many business apps use SAML, an older standard, and step-up works a little differently there.
SAML stands for Security Assertion Markup Language. It is a widely used standard for single sign-on between a company and its apps. In a SAML sign-in, Okta sends the app a signed message called an assertion, which states who the user is and how they signed in. SAML apps are often handled with policy-driven step-up, because the app side is typically a ready-made product that you cannot change.
Policy on the Okta side
Attach a stricter authentication policy to the SAML app, so Okta asks for stronger or fresher proof every time the app is opened.
Force re-authentication hint
Some SAML apps can send a hint with their request that says the user must sign in again. Support varies by app and by Okta setup, so test it before relying on it.
Request a context
SAML also has a way for an app to request a particular authentication context. Not every app uses it, and not every setup maps it the way you might expect.
What to expect in practice
For most SAML apps, the practical answer is the first option. You attach a stricter policy and accept that the whole app is treated as sensitive. That is perfectly fine for apps like an HR system or a finance tool, where nearly every action deserves care. If you need per-action control inside a SAML product, ask the vendor whether the app supports fine-grained re-authentication, or consider placing a second protected layer in front of the riskiest function.
A ready-made appliance usually comes with a few preset switches and no way to open it up. You can change which switch is on, but you cannot rewire it. For SAML apps, the policy is the switch you can reach, and the app’s internals stay out of your hands.
Always test the stricter policy by opening the app from both places: the Okta dashboard and the app’s own web address. Some setups prompt in one path but not the other, and you want to know before your users do.
12Step-Up for Administrators and Sensitive Okta Tasks
The accounts with the most power deserve the strictest treatment, and Okta itself applies step-up to them.
The Admin Console is the place where Okta administrators manage users, apps, and security rules. Whoever controls it can change policies, create administrators, and reset other people’s factors. This makes it the single most valuable target in the whole system. Okta therefore protects it with its own rules, and may ask an administrator to prove their identity again before certain sensitive actions, even in the middle of a session. The exact list of protected actions changes over time, so read the current documentation for your org.
What you should do yourself
Beyond Okta’s own protection, you can and should add your own. Attach a strict authentication policy to the Admin Console app, with a rule that requires a phishing-resistant factor, user verification, and a short re-authentication window. This is a strong example of policy-driven step-up, and it is a good place for a first rollout, because the group is small and security-minded.
| Admin action | Risk | Suggested step-up |
|---|---|---|
| Viewing reports | Low | Normal two-factor sign-in |
| Assigning an app to a group | Medium | Two factors with a recent proof |
| Resetting a user’s factors | High | Phishing-resistant proof, very recent |
| Changing authentication policies | High | Phishing-resistant proof with user verification |
| Creating or changing administrator roles | Very high | Hardware-protected proof and a second approver where possible |
The person who holds the master keys to the building is not allowed to simply wave a badge and walk in. They sign a log, use a special key, and sometimes need a colleague present. The more power a key has, the more careful the ritual around its use.
Keep the number of administrators small, give each person a named account, and avoid shared admin logins. Step-up protects each action, but it cannot rescue a setup where ten people share one password.
13Context Signals: Letting the Situation Decide
Sometimes the best reason to step up is not the app but the circumstances.
Okta can look at the context of a sign-in, which means the surrounding facts, and use them in rules. Context-based step-up is called adaptive or risk-based authentication. The idea is simple. On a normal day, from a normal place, on a normal device, keep the experience smooth. On an unusual day, add friction.
Network zones
A named set of locations, such as the office network or a list of countries. Rules can treat sign-ins inside and outside these zones differently.
Device state
Whether the device is registered, managed by the company, or meets health checks. Unknown devices can be asked for more proof.
Behavior detection
Unusual patterns, such as a new location or a sudden change in how someone signs in, can trigger a stronger check.
Risk level
Okta can estimate how risky a sign-in looks, and rules can respond with a stricter requirement or a block.
flowchart TD
R["User requests an action"] --> Q1{"Is the action sensitive?"}
Q1 -- "No" --> OK["Allow with the current session"]
Q1 -- "Yes" --> Q2{"Is the session strong enough?"}
Q2 -- "No" --> SU["Step up to a stronger proof"]
Q2 -- "Yes" --> Q3{"Was the last proof recent enough?"}
Q3 -- "No" --> RE["Ask for a fresh proof"]
Q3 -- "Yes" --> Q4{"Does the context look risky?"}
Q4 -- "Yes" --> SU
Q4 -- "No" --> OK2["Allow the action"]
SU --> OK2
RE --> OK2
Read the diagram from the top. A harmless action sails through. A sensitive action is checked for strength first, then freshness, and finally for any warning signs in the context. At any point a failed check sends the user to the step-up path. Only after all checks pass is the action allowed.
An experienced airport officer waves through the regular commuter who passes every day with the same bag, and takes a closer look at someone arriving from an unusual route with unusual luggage. The rules are the same for everyone, but the attention is guided by the situation.
Context signals are hints, not proof. A traveler on hotel Wi-Fi may look risky, and an attacker on a stolen laptop may look normal. Use context to decide when to ask for more, and keep strong factors as the real protection.
14Prerequisite: Users Must Be Able to Meet the Level
A step-up rule that nobody can satisfy is not security. It is a locked door with no key.
This is the most common reason for a failed step-up rollout. The administrator writes a rule that demands a phishing-resistant factor, and then discovers that most people have never registered one. When those users reach the step-up moment, they find nothing they can use, and they are stuck. The cure is to line up your enrollment policy, which controls what people can register, with your step-up rules, which control what people must present.
| Step-up rule demands | User must have enrolled | Enrollment policy should |
|---|---|---|
| Two factors | A password and one more factor, or two non-password factors | Make a main factor required and allow a backup |
| Phishing-resistant proof | A security key, built-in biometric authenticator, or similar factor | Allow and encourage that factor for the relevant group |
| Hardware-protected proof | A hardware key or a device with protected key storage | Require it for the highest-risk group |
| User verification | A device that supports a fingerprint, face scan, or PIN | Check device support before requiring it |
Use the soft option while you roll out
Okta provides a gentler version of some requests, such as the two-factor level marked “if possible.” This asks for the stronger proof when the user has one, and falls back to a lower level when the user does not. Using it during a rollout lets you see who is ready without locking anyone out. When your enrollment numbers look healthy, you can switch to the strict version.
Before a company demands that everyone carry a new type of ID card, it first hands those cards out. A rule that says “use your new card” is only fair once the cards exist. Step-up rules are the same: first hand out the cards, then require them.
Keep a simple dashboard that shows, for each group, how many people have registered the strong factor the next rule will require. Do not turn on a strict rule for a group until that number is close to everyone.
15Sessions, Recency, and Time
Step-up and session length are close cousins, but they are not the same thing.
When a person signs in to Okta, Okta creates a session. A session has a maximum lifetime and often an idle timeout, which ends it after a period of no activity. Apps then create their own sessions on top. All of these timers are separate, and mixing them up is a common source of confusion.
| Timer | What it controls | Relation to step-up |
|---|---|---|
| Okta session lifetime | How long Okta remembers the person | After it ends, the next sign-in is a full one |
| Okta idle timeout | How long without activity before the session ends | Reduces the risk of walk-away sessions |
| Re-authentication frequency | How old the last proof may be for a given app | Forces fresh proof even inside a healthy session |
| Maximum age in a request | How old the last proof may be for one sign-in request | Lets an app demand fresh proof at a single moment |
| App session lifetime | How long the app keeps the person signed in | May outlast Okta’s decisions, so set it sensibly |
The key insight is that a step-up proof makes the session stronger for a while, and then it fades. Once the freshness window ends, the next sensitive action will ask again. This is by design. A strong proof from three hours ago should not unlock a payment now.
A stamp on your hand at a festival lets you in and out of the main gate all day. Entry to the backstage area needs a second stamp that is only valid for an hour. When the hour passes, you must return to the desk for a new stamp. The first stamp is the session, and the second stamp is the step-up proof.
Choosing the freshness window
Short windows are safer and more annoying. Long windows are friendlier and riskier. A reasonable starting point for the most sensitive actions is a proof from the last few minutes, or even a fresh proof for each action. For medium-risk actions, an hour or two may be fine. Whatever you pick, make it consistent, explain it to users, and review it after you see real behavior in the logs.
16Designing the User Experience
Step-up works only when people accept it. A badly designed prompt turns allies into critics.
From the user’s side, step-up is an interruption. They were doing something, and suddenly they are asked to prove themselves again. If the interruption feels random, slow, or confusing, people will complain, work around it, or approve prompts without thinking. If it feels logical, quick, and explained, most people will accept it as a normal part of handling sensitive work.
Principles of a good step-up experience
Explain why
A short message such as “This payment is over your usual limit, so we need to confirm it is you” removes the feeling of randomness.
Ask rarely and meaningfully
If people see prompts all day, they stop reading them. Keep step-up for the moments that matter.
Offer the strongest easy option
A fingerprint tap on a laptop is both strong and fast. Prefer factors that are quick for the user and hard for the attacker.
Return people to where they were
After the proof, bring the user back to the exact task. Losing their place is a major source of frustration.
Provide a way forward
If the user has no usable factor, show a clear message and a help link, instead of a dead end.
Stay consistent
The same action should always ask for the same level, so people learn what to expect.
Prompt fatigue is a real risk
When someone receives repeated approval requests, they eventually tap yes without checking. Attackers know this and sometimes send a flood of requests, hoping that one will be approved by a tired person. This is called prompt fatigue or push bombing. Settings such as number matching, where the user must pick the number shown on the sign-in screen, and user verification on the device both make blind approvals impossible. A good step-up design uses them.
A smoke alarm that rings every time someone makes toast soon gets ignored, and then it fails on the one day there is a real fire. A security prompt works the same way. Each unnecessary prompt teaches people to ignore the next one.
Accessibility and device variety
Not everyone can tap a fingerprint reader, scan a face, or read a small number on a phone screen. Some people use screen readers, some have limited hand movement, and some work on shared kiosks or older laptops. A step-up design that works only for the typical user will quietly shut out others at the very moment they need to finish a task. Offer more than one strong method where your security rules allow it, test prompts with assistive tools, and make sure messages are written in plain language that a screen reader can read in a sensible order.
Device variety matters as well. A hardware key that works on a desktop may need an adapter for a phone. A built-in biometric authenticator is available only on devices that have the hardware and have it set up. Before you demand a particular method, list the devices people really use and check what each one supports. A short survey, or a look at the sign-in logs for operating systems and browsers, often reveals surprises such as a group of shared tablets that cannot do what the new rule demands.
Support and training
The help desk is the safety net for any new rule. Give support staff a one-page guide that explains what step-up is, which apps are in which tier, what the prompts look like, and how to verify a caller before helping with a lost factor. Add a short message at the point of the prompt, with a link to the guide for users. When people can find the answer in a minute, they do not open a ticket, and the rollout feels calm. When they cannot, even a good rule earns a bad reputation.
Write the wording of the prompts together with a customer-facing or HR colleague. Plain words, a friendly tone, and a clear next step lower support calls more than any technical tweak.
17Setting It Up, Step by Step
Exact screens change over time, but the order of work stays the same.
Policy-driven setup
List the sensitive apps and actions
Write down which apps hold the most valuable data or allow the most powerful changes, and rank them by risk.
Choose a level for each tier
Decide the strength and the freshness for each tier, such as two factors for medium risk and phishing-resistant proof for high risk.
Check enrollment readiness
Confirm that people in each group have registered the factors the new rule will demand, or can do so easily.
Create or copy an authentication policy
In the Admin Console, open the authentication policies, create a new policy for the tier, and give it a clear name.
Add rules in the right order
Place the most specific rules at the top, and keep a safe catch-all rule at the bottom.
Attach the policy to the app
Open the app’s sign-on settings and choose the new policy. Many apps may share one policy.
Pilot with a small group
Start with a few friendly users, and sign in as a test user from each affected group to see the real screens.
Communicate and widen
Tell people what is changing and why, then widen to everyone in waves, while watching the logs.
App-driven setup
Map actions to levels
For each sensitive action in the app, write the required strength and the maximum age of the proof.
Register the app as an OpenID Connect app in Okta
Create the integration, note the client identifier and redirect address, and keep any secret safe on the server.
Build the step-up request
When a sensitive action starts, have the app redirect to Okta with the required level and the maximum age.
Verify the token that returns
Check the signature, the level, and the time before allowing the action. Reject anything that falls short.
Handle the failure paths
Decide what the app shows when the user cancels, has no suitable factor, or fails the check.
Test with real accounts
Try each action with a user who has a strong factor, a user who has only a weak one, and a user who has none.
Never test a new strict rule using only your own administrator account. Admin accounts often sit in special groups or policies, so a problem that ordinary users will hit may never show up for you.
18Worked Example: Approving a Large Payment
A story makes the moving parts easy to see in one piece.
Meet Anika, who works in the finance team of a mid-size company. Every morning she signs in to Okta with a prompt on her phone, and she opens the company’s payments app. That sign-in is level 2: two kinds of proof. For small, routine tasks such as viewing invoices, the payments app is happy with that.
At eleven o’clock she prepares a large supplier payment. When she clicks the approve button, the payments app notices that the amount is above a set limit. It checks the token from her morning sign-in. The level is two-factor, but the rule for large payments requires a phishing-resistant proof from the last five minutes. So the app redirects her to Okta with a request for a higher level and a maximum age of five minutes.
Okta sees that Anika has an active session, but that her last proof was too long ago, and was not phishing-resistant. It asks her to use the fingerprint reader on her laptop, which is registered as a built-in biometric authenticator. She taps, and it works in two seconds. Okta sends a token back to the payments app. The app verifies the signature, sees the correct level, sees that the time is only a few seconds old, and allows the payment.
| Moment | What the user did | Level reached | Prompt? |
|---|---|---|---|
| Morning sign-in | Approved a prompt on her phone | Two factors | Yes, once |
| Viewing invoices | Nothing new | Two factors, from this morning | No |
| Small payment | Nothing new | Two factors, from this morning | No |
| Large payment | Fingerprint on her laptop | Phishing-resistant, seconds old | Yes, for this action only |
| Another large payment ten minutes later | Fingerprint again | Phishing-resistant, seconds old | Yes, because the window is five minutes |
It is like a cash machine that lets you check your balance after inserting the card, but asks for the PIN again before it hands over a large sum. The card gets you in, and the PIN protects the part that matters.
What would have happened to an attacker
Suppose an attacker stole Anika’s browser session at lunchtime. They could view invoices with no extra proof, since the session is valid. But the first time they tried to approve a large payment, the app would send them to Okta and ask for a fingerprint, which they do not have. The attack stops at the exact step where damage would begin. That is the whole point of step-up.
19Worked Example: Tiering Apps Across a Company
Most companies do better with a small number of tiers than with a different rule for every app.
Imagine a company with about a hundred cloud apps. Writing a custom rule for each would be exhausting and hard to explain. A simpler approach is to sort apps into a few tiers by risk, and to attach one shared policy to each tier. People then learn a simple pattern: normal apps, careful apps, and critical apps.
| Tier | Example apps | Required proof | Freshness | Extra conditions |
|---|---|---|---|---|
| Standard | Chat, calendar, shared documents | Two factors | Once per working day | None |
| Careful | Customer database, source code hosting, HR portal | Two factors, with user verification | Every few hours | Managed device or office network, or stronger proof |
| Critical | Payroll, payments, cloud admin consoles, Okta Admin Console | Phishing-resistant, with user verification | Every sign-in or every few minutes | Managed device, named group only |
Why three tiers work well
Three tiers are easy to remember, easy to teach, and easy to audit. New apps can be placed in a tier with a short conversation: “How bad would it be if a stranger used this app for ten minutes?” If the answer is “not very bad,” it goes in standard. If the answer is “we would call a lawyer,” it goes in critical.
An office usually has three kinds of room: open desks, meeting rooms that need a booking, and locked rooms for finance or servers. People rarely complain about this simple pattern, because it is easy to understand, and the extra care applies only where it makes sense.
The tier of an app can change. A small tool that starts to hold more sensitive data may need to move up. Review the list at least once or twice a year, and any time an app gains a new powerful feature.
20Data Flow and Lifecycle of a Step-Up
Following the data from request to record shows where each check happens.
Every step-up has a short life cycle. It starts with a sensitive action, passes through a decision, collects a stronger proof, and ends with a record. Knowing each stage helps you place checks, logs, and alerts in the right spots.
flowchart TD A["Sensitive action requested"] --> B["App or policy asks for a higher level"] B --> C["Okta evaluates the policy and the session"] C --> D["User completes the stronger proof"] D --> E["Okta records the event and updates the session"] E --> F["Token returned with level and time claims"] F --> G["App verifies the token and acts"] G --> H["Logs in the app and in Okta can be matched"]
| Stage | Who acts | What is checked or recorded |
|---|---|---|
| Request | The app or the policy | The sensitivity of the action and the required level |
| Evaluation | Okta | The session, the policy rules, and the context signals |
| Proof | The user and the device | The factor used and, where required, user verification |
| Update | Okta | The new level and the new proof time on the session |
| Token | Okta | Signed claims for level, methods, and time |
| Verification | The app | Signature, level, and freshness of the token |
| Record | Okta and the app | Events that tell the story of who did what and when |
What is stored and what is not
Okta stores the facts about the sign-in, such as which kind of factor was used and when. It does not store your fingerprint. When a person uses a fingerprint on a laptop or phone, the device checks it locally and then uses a protected key to answer Okta. Okta only sees the signed answer. This is a privacy-friendly design, and it is worth saying so when users ask whether their body data is being collected.
When you unlock your phone with a fingerprint, the phone does not email your fingerprint to anyone. It simply says “yes, the owner is here,” and that statement is all that travels. Step-up with biometrics works the same way.
21Security Considerations
Step-up is a security control, so attackers study it just as carefully as defenders do.
A well-designed step-up closes many doors, but it can also contain gaps. The most important risks come from poor checking, weak fallbacks, and tired users. Each one has a clear remedy.
Downgrade attacks
An attacker alters the request so that it asks for a lower level. The app must verify the level in the signed token, not assume it.
Weak fallbacks
If a user can bypass a strong factor by choosing a weak one, the strong one adds nothing. Remove weak options from high tiers.
Prompt fatigue
Repeated approvals can wear people down. Use number matching and user verification to make blind approval impossible.
Phishing
A fake site collects the password and the one-time code together. Phishing-resistant factors defeat this, because they check the real site address.
Token replay
A stolen token is used again. Short lifetimes, signature checks, and matching the token to the request reduce this.
Weak recovery
A help desk that resets factors on a phone call undoes the whole design. Recovery needs the same care as sign-in.
The weakest link rule
Security chains are as strong as their weakest link. If a critical app demands a hardware key, but the user can also choose a text message for the same app, the real strength is that of the text message. When you design a step-up rule, look at every method the rule allows and ask: if an attacker chose this one, would I still be comfortable? If not, remove it from that rule.
Beware of “remember this device” or similar options on critical tiers. They can skip the very proof you are trying to demand. Allow them for low tiers if you wish, and turn them off for the apps that matter most.
A vault with a steel door and a cardboard back wall is only as safe as the cardboard. Step-up rules need strong walls on every side, including the recovery route and the fallback factors that people tend to forget.
Session theft and why step-up helps
Many modern attacks do not guess passwords at all. Malicious software on a laptop, or a lookalike site that relays the real sign-in page, can capture a live session cookie after the user has finished a perfectly good sign-in. With that cookie, the attacker looks like the user. Step-up changes the value of that stolen cookie. Because the most dangerous actions demand a new proof that the attacker cannot produce, the stolen session can read ordinary data but cannot move money, change administrators, or export the customer list. The attacker is forced to attempt the hard part with no help from the stolen session.
This is also why freshness matters as much as strength. A strong proof from nine hours ago says little about who holds the keyboard now. Short windows on critical actions mean that even a patient attacker, who waits for the right moment, meets a fresh question at the worst time for them.
Privacy and least privilege
Context signals such as location, network, and device state are personal information. Collect only what a rule truly needs, explain it in your acceptable-use policy, and limit who can view the detailed logs. Apply the same least-privilege thinking to people: only the administrators who must edit authentication policies should hold that power, and ideally changes to critical policies should need a second person to review them. Security controls that are themselves tightly controlled earn trust from both auditors and employees.
Protect the policy itself
An attacker who becomes an administrator can simply weaken the rule. Limit who can edit authentication policies, ask for strong proof before they can do so, and watch the log for any change to policies that cover critical apps. A rulebook that anyone can quietly rewrite protects nothing.
22High Availability and Failure Scenarios
Plan for the day a rule locks out the wrong people or a service is unreachable.
Step-up adds one more thing that can go wrong at the exact moment people are doing important work. Planning for failure means you know what happens when the stronger proof is not available, and how to recover quickly without opening a hole.
| What goes wrong | What users see | How to reduce the impact |
|---|---|---|
| A rule demands a factor that users have not enrolled | A dead end at the step-up moment | Use the soft version first, check enrollment numbers, and roll out in waves |
| A user loses the device that holds the strong factor | Cannot complete step-up, so cannot finish sensitive work | Encourage two strong factors, and keep a safe, verified recovery process |
| A broad rule sits above a narrow one | The wrong group gets the wrong level | Reorder rules, and test with a user from each group |
| The app does not verify the returned token | Step-up appears to work but gives no protection | Add token checks and test with a deliberately weak sign-in |
| Freshness window too short | People are prompted again and again | Adjust the window, and group related actions under one proof where safe |
| Okta or the network is unreachable | Step-up cannot complete, so sensitive actions are blocked | Decide in advance whether the action fails closed, and prepare a manual approval route |
| Device checks fail for healthy devices | Managed laptops are treated as unknown | Review the device registration and health settings |
Fail closed, with a plan
When the stronger proof cannot be obtained, a sensitive action should normally be blocked rather than allowed. Security people call this failing closed. It is the safe default, but it needs a plan so that the business is not stuck. For a critical action, such as an urgent payment, keep a documented manual route, for example approval by two named managers, so that people do not invent unsafe workarounds in a hurry.
Keep one or two emergency administrator accounts in a separate, carefully guarded policy. If a bad rule locks out all other administrators, these accounts let you repair it. Test them every few months, and store their credentials in a secure vault.
23Monitoring, Logging, and Metrics
A rule you cannot observe is a rule you cannot improve.
Okta keeps a searchable record of events called the System Log. It shows sign-ins, factor use, policy decisions, and administrator changes. Event names and wording vary between releases, so if a name below does not match, search by user, time, and app name. Examples to look for include user.authentication.auth_via_mfa when a person passes a multi-factor check, user.authentication.sso when a person opens an app through single sign-on, and policy.evaluate_sign_on when Okta evaluates a sign-in against a policy. Many events also record which rule applied, which helps you check that your rules behave as intended.
Step-up completion rate
Of all step-up prompts, how many ended in success. A low rate suggests confusing flows or missing enrollments.
Prompts per user per day
Tracks how often people are interrupted. A sudden jump after a policy change is a signal to review the freshness window.
Factor mix at step-up
Shows which factors people use for step-up, and whether weak ones still appear on critical tiers.
Failed step-ups
Bursts of failures for one user or many users can signal an attack, or a broken rule.
Policy and rule changes
Who edited which policy and when, so that quiet weakening of a rule is noticed.
Enrollment of strong factors
The share of each group that can meet the next level, which tells you when a stricter rule is safe to turn on.
Useful alerts
- A change to any policy or rule attached to a critical app.
- A sharp rise in failed step-up attempts for one account, which may be an attack.
- A user completing step-up from a new country within minutes of a sign-in elsewhere.
- A weak factor appearing in a tier that should accept only strong ones.
- A big drop in step-up success after a rule change.
Send these logs to your security monitoring tool if you have one, using Okta’s log streaming or event hooks. Combine Okta’s view with the app’s own audit log, because each side sees something the other does not. Matching the two by time and user is often the fastest way to explain a surprising event.
A building with fancy locks but no entry log is hard to protect. When something goes wrong, nobody can say who went where. Logs are the visitor book of your digital building, and the stricter the door, the more valuable the book becomes.
24Advantages, Disadvantages, and Trade-offs
Step-up is a balancing act between safety and convenience. Here is an honest look at both sides.
Advantages
- Strong protection exactly where the stakes are high.
- Smooth, low-friction experience for everyday work.
- Stolen sessions are far less valuable to attackers.
- Rules live in one place and are easy to review.
- Works with both policy-driven and app-driven designs.
- Supports passwordless and phishing-resistant factors.
Disadvantages
- Adds interruptions that users may dislike.
- Needs enrollment planning, or users get stuck.
- App-driven step-up requires developer work and careful token checks.
- Rule order and conditions can be hard to reason about.
- Strong factors can cost money and effort, such as hardware keys.
- Poor wording or timing can create support calls.
Comparing the approaches
| Approach | Security | User friction | Effort | Best for |
|---|---|---|---|---|
| Strict proof for everything | High | Very high | Low | Very small, high-risk environments |
| One easy sign-in for the day | Low | Very low | Low | Low-risk tools only |
| Policy-driven step-up by tier | High where it matters | Low to medium | Medium | Most organizations |
| App-driven step-up per action | Very high where it matters | Low | High | Apps with clear sensitive actions |
| Context-based step-up | High against unusual events | Low on normal days | Medium to high | Mixed workforces and remote work |
For most companies, the sweet spot is a mix: policy-driven tiers for whole apps, context rules for unusual situations, and app-driven step-up for a short list of especially dangerous actions. Start with the first, add the second when you have good data, and add the third where your developers can invest.
25Design Patterns and Anti-Patterns
A pattern is a habit that works. An anti-pattern is a habit that looks fine until it hurts.
Patterns that work
Tiered apps
Sort apps into standard, careful, and critical tiers, and attach one shared policy to each.
Soft first, strict later
Use the “if possible” version of a rule while people enroll, then switch to strict when the numbers are healthy.
Action-level step-up
Ask for stronger proof only on the few actions that can cause real harm, not on every page.
Verify the token
Always check the level and time in the returned token before acting.
Phishing-resistant for admins
Give administrators and finance approvers the strongest factors, with user verification.
Pilot, then widen
Test each rule with a small group and expand in waves.
Anti-patterns to avoid
What it looks like
The app asks Okta for a higher level, but never checks the token that comes back. As long as the user returns from Okta, the action is allowed.
Why it hurts
An attacker can change the request or skip the step entirely. The app then offers the appearance of step-up with none of the protection.
Better approach
Verify the signature, the level, and the time in the signed token, and reject any action that falls short.
What it looks like
Every app is placed in the strictest tier, so people are asked for a hardware key to open the cafeteria menu.
Why it hurts
People grow tired and start approving anything, or they push for exceptions. The rules lose respect, and real protection weakens.
Better approach
Use tiers, and keep the strictest rules for the apps and actions that truly deserve them.
What it looks like
A rule demands a phishing-resistant factor from a group in which nobody has registered one.
Why it hurts
The group is locked out of the app on the day the rule goes live, and the help desk is flooded.
Better approach
Check enrollment first, use the soft version during the rollout, and give people time and clear instructions.
26Best Practices and Common Mistakes
These habits separate a smooth rollout from a stressful one.
Start with a risk list
Write down which apps and actions are sensitive, and why, before touching any setting.
Use a small number of tiers
Three tiers are easy to explain, teach, and audit.
Match rules to enrollment
Never demand a factor that people cannot yet register.
Prefer strength over frequency
A single strong, phishing-resistant proof beats many weak prompts.
Verify, log, and review
Check tokens in apps, monitor events in Okta, and review rules on a schedule.
Communicate before you change
Tell people what will happen, when, and where to find help.
Keep a recovery route
Have a verified process and emergency accounts so a bad rule is never a disaster.
A short checklist before turning on a stricter rule
- Purpose: Can you state in one sentence why this rule is needed?
- Audience: Do you know which groups and roughly how many people it affects?
- Readiness: Have enough of them enrolled the factors the rule will demand?
- Order: Is the rule in the right place, with specific rules above broad ones?
- Test: Have you signed in as a test user from each affected group?
- Message: Do people know what to expect and where to get help?
- Rollback: Do you know how to undo the change quickly if needed?
Measuring success after launch
A step-up program is working when attackers are stopped and employees barely notice. Pick a few simple measures before you start, and review them monthly for the first quarter. Useful measures include the share of sensitive actions protected by a stronger proof, the percentage of users in critical groups who have enrolled a phishing-resistant factor, the average number of step-up prompts per person each week, and the number of support tickets that mention the new prompts. Compare these numbers with your baseline from before the change.
If protection is rising while tickets stay flat, you are on the right track. If tickets climb, read them for patterns: they usually point to a single confusing message, a missing enrollment, or a window that is too short. Fix the cause, tell people what changed, and keep going. Over time, widen the program carefully, moving more actions into the stronger tiers as users grow comfortable and as the strong factors become part of everyday habit.
Mistakes seen again and again
Setting the freshness window to “every sign-in” for a busy app and then wondering why people complain. Match the window to how people really work.
Forgetting that the app also has its own session. A stronger Okta proof does not help if the app ignores it and keeps its old, weaker session alive.
Rolling out a strict rule on a Monday morning or just before a financial deadline. Choose a calm week, so support can absorb the questions.
27Real-World Scenarios
These stories are illustrative, built from common patterns, to show the ideas at work.
A software company protecting production access
Engineers sign in to the company’s tools with a prompt on their phones. But the cloud admin console, which can change production systems, sits in the critical tier. Opening it asks for a hardware-backed fingerprint check from the last few minutes. A stolen session from a laptop is now useless for changing production.
A finance team approving transfers
The payments app asks Okta for a phishing-resistant proof only when a transfer passes a limit or a new payee is added. Routine work stays smooth, and the few risky moments get the strongest check.
A company with many remote workers
Workers sign in from home, cafes, and travel. A context rule lets known managed laptops on familiar networks continue smoothly, and asks for a stronger proof when a sign-in comes from a new country or an unregistered device. People notice fewer prompts than before, and security notices more attacks.
An HR system holding personal data
The HR portal is a ready-made SAML product with no per-action control. The company attaches a careful-tier policy that asks for two factors with user verification every few hours, and limits access to named HR staff. The app stays unchanged, and the risk drops sharply.
28Troubleshooting Common Problems
Most step-up problems come from a short list of causes. Check these first.
| Symptom | Likely cause | What to try |
|---|---|---|
| The user is never asked to step up | The app uses a policy with no stricter rule, or a broader rule matches first | Review the app’s policy and the order of its rules |
| The user is asked every few minutes | The freshness window is too short, or the app requests fresh proof on every action | Lengthen the window, and group actions under one proof where safe |
| The user cannot complete step-up | They have not enrolled the required factor | Check enrollment, help them register, or use the soft version for now |
| The app allows the action even without step-up | The app does not verify the returned token | Add checks for the signature, level, and time |
| Dashboard click prompts, but the app’s direct link does not | Different paths use different settings | Test both paths and align the app and policy settings |
| Strict rule applies to the wrong group | Rule order or group membership is wrong | Check which rule matched in the log, and reorder or fix groups |
| Managed laptops are treated as unknown | Device registration or health checks are incomplete | Review device registration and the device conditions in the rule |
| Step-up works for some browsers only | The factor is not supported in every browser or operating system | Check browser support for the factor and offer a supported alternative |
Testing step-up before and after launch
Treat every step-up rule like a small software release. Before launch, write down the test cases: a user with a strong factor, a user with only a weak factor, a user with no factor, a user on a managed device, a user on an unknown device, and a user whose last proof is just inside or just outside the freshness window. Run each case on each path into the app, including the dashboard tile, the direct link, and any mobile app. Record what you expected and what you saw.
After launch, repeat a short version of the same tests whenever you change a policy, add an app to a tier, or update the app’s own sign-in code. Many teams automate the app-side checks, so a developer change that accidentally stops verifying the token fails a test instead of reaching production. A few minutes of regular testing prevents the quiet failures that are hardest to notice, namely the ones where nothing breaks and protection simply disappears.
A repeatable troubleshooting routine
Confirm the user and their groups
Groups decide which rule applies, so start with who the person is and what groups they belong to.
Find the rule that matched
Look in the System Log for the policy evaluation and read which rule applied.
Compare with what the user has
Check which factors the user has enrolled against what the rule demands.
Check the app side
For app-driven step-up, read the request the app sent and the token it received.
Reproduce with a test user
If a test user from the same group sees the same thing, the cause is in the rule or the app. If not, look at the user’s device or enrollment.
29Frequently Asked Questions
30Summary and Key Takeaways
Key Takeaways
- Step-up raises the bar only when needed. It asks for stronger or fresher proof in the middle of a session, so everyday work stays smooth and risky moments get extra protection.
- Think in strength and freshness. Strength is how hard the proof is to fake, and freshness is how recently it was given, and a good rule can demand either or both.
- Policy-driven and app-driven work together. Authentication policies protect whole apps without code, while OpenID Connect requests protect individual actions inside apps.
- Always verify the result. An app must check the signature, level, and time in the returned token, instead of trusting the redirect.
- Enroll before you enforce. A rule is only fair if people can meet it, so line up your enrollment policy with your step-up rules and use soft options during rollout.
- Protect the weak links. Remove weak fallbacks from critical tiers, secure recovery routes, and guard the policies themselves from quiet changes.
- Design for people and watch the logs. Explain prompts, keep them rare, use number matching and user verification, and monitor completion rates, failures, and policy changes.