T Techclick ← All lessons
Okta · Evidence desk · Interactive lesson

Prove Okta is working — first tool + proof field

01:40. Slack: “Is Okta even working? Finance can’t sign in.” The CIO is already in the channel. A screenshot of the End-User Dashboard is not proof. This desk is four official surfaces — System Log, Authentication / MFA events, Device Trust / FastPass signals, Application sign-on policy evaluation — each mapped to one ticket, one first click, and one field you paste before you change anything.

~20 min read · L2 primary · Quiz at end · Pair · Session factory

⚡ Quick Answer

How you prove Okta is working: System Log first. eventType, outcome.result, actor, client.ipAddress, debugContext. MFA events, FastPass / Device Trust, app sign-in policy evaluation.

After this page you can

Quick answer (say this out loud)

System Log answers “did this actor even hit Okta, and what was outcome.result?” Authentication / MFA events answer “did the factor succeed — user.authentication.auth_via_mfa, user.session.start?” Device Trust / FastPass answers “was the device registered / managed, and what health signals came back?” App sign-in policy evaluation answers “which rule matched — policy.evaluate_sign_on Allow, Deny, or Challenge?” An ACTIVE People page is not a session. A green Okta Verify screenshot is not a policy Allow.

1. Why “is Okta working?” is four questions

Operators collapse four failures into one sentence. The browser never reached the Okta org. The factor failed. FastPass saw an unmanaged device. The app sign-in rule denied after a perfect password. Those are four first clicks.

This page is the night-shift desk for proof. The session factory taught the five stamps — status, assignment, policy / risk, zone, factor. Here you learn the four official surfaces you actually open, in order, when someone asks you to prove Okta is working or explain why they cannot sign in.

Hero · four tiles, one ticket
Night-shift operations desk with deny chips on one monitor and triage complete on the other
Notice: four surfaces, not one “Okta dashboard.” You pick the surface that matches the question, then you quote one field.
Interview line

If they say “prove Okta is working,” do not say “I opened Admin Console.” Say: “I prove the hit with System Log eventType + outcome.result, the factor with user.authentication.auth_via_mfa, the device with FastPass health signals, and the rule with policy.evaluate_sign_on.”

2. Mental model — four proof tools

Memorise four named objects before you click. Each tool is allowed to prove one thing. Over-claiming a field is how you disable a high-risk rule at 02:00.

1 · System Log

Admin path: Reports → System Log. Expand the row. Quote eventType, outcome.result, actor, client.ipAddress, debugContext. Empty for that user + UTC window means they never hit the org.

2 · Auth / MFA events

user.authentication.auth_via_mfa, user.session.start, user.authentication.verify, user.authentication.sso. Proves the factor and the SSO assertion. Enrollment on Authenticators is not this row.

3 · FastPass / Device Trust

On FastPass sign-in, official events carry a Device object: disk encryption, jailbreak, screen lock, secure hardware. Device Trust certificate path uses user.authentication.authenticate. Unmanaged is a signal, not an outage.

4 · App sign-in evaluation

policy.evaluate_sign_on — the global session policy or app sign-in policy that matched. Allow / Deny / Challenge. Path to edit is Security → Authentication Policies → App sign-in, but you do not open it first.

Hard words, once

Actor = who Okta thinks initiated the event. Client = browser / IP / user-agent. DebugContext = risk, ThreatInsight, behaviors. Transaction.id = glue for the same attempt.

What each cannot prove

System Log existence is not an Allow. MFA SUCCESS is not a FastPass managed device. Device health is not assignment. A named policy Deny is not “Okta is down.”

Flow 1 · four tools, one question each
Write actor + app + UTC first · then pick the tool Is Okta working? four questions, not one System Log Did they hit Okta? eventType · outcome.result actor · client.ipAddress Reports → System Log not a People status Auth / MFA Did the factor succeed? auth_via_mfa session.start · sso same System Log query not enrollment photo FastPass / Trust Was the device trusted? Device health object Registered · Managed expand Device on event not a password reset Policy evaluation Which rule matched? policy.evaluate_sign_on Allow · Deny · Challenge App sign-in / GSP not a SAML rebuild Empty System Log is data. It usually means the browser never reached this org. Do not invent a policy Deny from an empty log. Confirm actor + UTC, then check DNS / bookmark / IdP URL.

Read left → right. Each box is allowed one claim. If you cannot name the field, you are not proving — you are guessing.

Say this out loud

I prove the hit, then the factor, then the device, then the rule. I do not change an app sign-in policy, a network zone, or ThreatInsight until I can quote the field that made me do it.

3. Decision flow — ticket → first tool

Flowchart first. Do not open Security → Authentication Policies until a diamond says so.

Path · pick the branch before the menu
Abstract diamond splitting a sign-in ticket into System Log, MFA, FastPass, and policy paths
Notice: the diamond is the ticket. The path is the tool. The field comes last. Do not reverse that order.
Flow 2 · first-tool diamond
Symptom first · tool second · field third What must we prove? Any System Log row for this actor? Empty log Never hit this org URL / DNS / bookmark Factor fail auth_via_mfa outcome.result Device / FastPass Device object Registered · Managed Named Deny evaluate_sign_on rule + Access is No tile / no SSO user.authentication.sso then Assignments Empty System Log → stop. There is no policy.evaluate_sign_on to chase. Fix the IdP URL / DNS / bookmark / time window. Then re-search actor + UTC. Diamond = decision. Do not edit High-Risk-SignOn from the bottom box. Glue the attempt with transaction.id eq "<id>" so MFA, policy, and device rows stay together.

Read the diamond first. No tile never starts in ThreatInsight. Named Deny never starts with a password reset. Empty log never starts in Access is Denied.

4. How to choose — first tool + proof field

Print this next to Admin Console. If you cannot recite the proof field, you are not ready to change anything.

If the ticket says…First tool (official path)Proof fieldDo not open first
“Is Okta even working?” / hotel laptop / bookmark Reports → System Log · actor + UTC window Any row exists? Then eventType + outcome.result + actor A new app sign-in Allow
Password ok, MFA / push / FastPass fails System Log query eventType eq "user.authentication.auth_via_mfa" outcome.result + authenticator target + outcome.reason Directory → People password reset
Unmanaged / personal laptop / “device not trusted” Same attempt: expand Device on FastPass events Device Registered / Managed + health signals (disk encryption, screen lock, secure hardware) Disable the app sign-in policy
Named deny after a policy ship / high-risk Query eventType eq "policy.evaluate_sign_on" Allow / Deny / Challenge + the policy / rule that matched + debugContext.debugData.risk Rebuild SAML metadata
ACTIVE user, no Finance tile, no SSO Query eventType eq "user.authentication.sso" then Applications → Assignments Missing SSO row + assignment (or application.user_membership.remove) ThreatInsight block mode
Whole new office challenged / denied Expand client → IP; compare to Security → Networks client.ipAddress + debugContext.debugData.risk (Anomalous location / device) Org-wide policy off
ThreatInsight is not the first deny

Official ThreatInsight events use eventType eq "security.threat.detected" and debugContext.debugData.threatSuspected eq "true". Those events often have no username — ThreatInsight evaluates before the user is identified. If your deny already names a policy rule, quote that rule. Do not flip ThreatInsight from Log to Log and enforce at 01:40 to “see if it helps.”

5. Runbook Side A → B → C

Side A proves the hit and the five System Log fields. Side B proves the factor and the policy evaluation. Side C proves the device / FastPass posture and the app sign-in rule you would change. On a messy Sev-2, do them in this order until a field lights up.

Side A — System Log first (the hit)

  1. Open Reports → System Log, not Directory

    Official: Reports → System Log (System Log; System Log filters and search). Default window is the last seven days — set From / To / Time Zone to the ticket UTC. Search the actor (username). People → Status = ACTIVE does not prove a sign-in occurred.

  2. Expand the row — five fields, always

    Click the right arrow. Official Help: the expansion shows actor, client, event, request, and target. From those surfaces copy: eventType, outcome.result, actor, client.ipAddress (hover the IP in Client to filter), and debugContext (DebugContext / DebugData).

  3. If the log is empty for that actor + window, stop

    Empty is a result. The browser never presented this org. Check the Okta URL, DNS, a stale bookmark to another cell, or a wrong time zone on the filter. There is no policy.evaluate_sign_on to edit.

  4. Glue the attempt

    Copy transaction.id. Official query: transaction.id eq "<TRANSACTION_ID>". That pulls MFA, policy evaluation, ThreatInsight, and session-start rows for the same click. Source: System Log events for Okta ThreatInsight.

System Log — queries you paste (official Help)
Path:     Reports → System Log
Window:   ticket From / To / Time Zone  (default is last 7 days)

# This actor, this hour
actor.alternateId eq "priya@lab.example"

# MFA result
eventType eq "user.authentication.auth_via_mfa"

# Policy / rule that matched
eventType eq "policy.evaluate_sign_on"

# SSO assertion to the app
eventType eq "user.authentication.sso"

# Same click
transaction.id eq "<TRANSACTION_ID>"

# Risk / ThreatInsight
debugContext.debugData.risk co "level=HIGH"
debugContext.debugData.threatSuspected eq "true"
eventType eq "security.threat.detected"
lab.okta.com · Reports → System Log · event detail
Training mock · not live

Reports / System Log / event detail

Event detail

EventActorClientDebugContextTarget
policy.evaluate_sign_on
DENY
priya@lab.example
203.0.113.40
High-Risk-SignOn · unmanaged
tr-lab-2048
debugContext.debugData.risk = level=HIGH reasons=Anomalous Device
debugContext.debugData.threatSuspected = false
Device.registered = true · Device.managed = false · FastPass = Okta Verify

Lab identities and RFC 5737 address only. Live: expand Event / Actor / Client / DebugContext. Filter the IP from Client.

Source: Okta Help — System Log; System Log filters and search (expand actor, client, event, request, target); Risk scoring (DebugContext / DebugData, debugContext.debugData.risk); Global session policy evaluation (policy.evaluate_sign_on). Training mock · not live.

Side B — Authentication / MFA + policy evaluation

  1. Read the official trio for auth issues

    Okta Help (Global session policy evaluation) lists three System Log events to identify and resolve authentication issues: policy.evaluate_sign_on, user.authentication.auth_via_mfa, and user.session.start. Search all three on the same transaction.id.

  2. MFA row — user.authentication.auth_via_mfa

    Official Help: this event can carry Allow, Deny, and Challenge (Challenge = additional authentication required). It can include the app the user accessed and the policy rule that matched. The sign-on policy may be evaluated more than once in one sequence. Device-health Help also lists USER_AUTHENTICATION_AUTH_VIA_MFA on FastPass sign-in. Chrome Device Trust Help: this event appears only if the app sign-in policy requires MFA.

  3. Session start — user.session.start

    Official: status of the first authenticator verification that establishes an identity-provider session. Incorrect authenticator → VERIFICATION_ERROR. It logs user ID, session start time, and the method used. It does not mean an access token was granted. ThreatInsight’s ThreatSuspected field also appears on this event.

  4. Policy row — policy.evaluate_sign_on

    Official Help (and Classic Engine release notes on help.okta.com): triggered when the Okta sign-on policy and/or app sign-on policy are evaluated. Behavior Detection Help: open DebugContext / DebugData on user.session.start and policy.evaluate_sign_on for behavior key=value pairs (POSITIVE / NEGATIVE / UNKNOWN / BAD_REQUEST). Quote Allow, Deny, or Challenge plus the rule name.

  5. SSO row — only after the broker allowed

    Official common filter: eventType eq "user.authentication.sso" (Application Access / Sign-in Success). No SSO row + healthy actor usually means assignment or they never launched the app — not a factor bug.

Global session vs app sign-in (official)

The global session policy controls how long the overall Okta session is valid. The app sign-in policy controls re-authentication frequency. After Maximum Okta global session idle time, users reauthenticate per the app sign-in rule — even if they selected Keep me signed in. Source: Global session policy evaluation · Notes.

Side C — FastPass / Device Trust + the rule you would change

  1. Read device health on the FastPass events

    Official (Device health attributes in System Log events): when users sign in with Okta FastPass, these events carry device health — POLICY_EVALUATE_SIGN_ON, USER_AUTHENTICATION_VERIFY, USER_AUTHENTICATION_AUTH_VIA_MFA, USER_SESSION_START. The Device object shows Disk Encryption Type, Jailbreak, Screen Lock Type, Secure Hardware Present. Use that against the device assurance policy — do not guess from a phone photo of Okta Verify.

  2. Know FastPass vs legacy Device Trust events

    FastPass is the phishing-resistant, passwordless authenticator in Okta Verify (Android, iOS, macOS, Windows; managed and unmanaged). Official Device Trust verification events (replace Desktop Device Trust with FastPass): user.authentication.authenticate (device through a certificate), user.credential.enroll, pki.cert.issue, pki.cert.revoke. If you still see only the certificate events, the org may not have finished the FastPass cutover.

  3. Open the app sign-in rule only after you can name it

    Path: Security → Authentication Policies → App sign-in → the policy → Rules → the rule System Log named. Official IF conditions include Device state (Registered), Device management, Device assurance policy, Device platform, User’s IP (network zones), and Risk. THEN Access is Denied or Allowed after successful authentication. Possession constraints include Phishing-resistant (FastPass / passkeys) and Hardware protection.

  4. Zone and risk live on the same attempt

    Risk scoring Help: open DebugContext / DebugData. Example: MEDIUM because reasons=Anomalous Device, with ThreatSuspected=false. Queries: debugContext.debugData.risk co "level=HIGH" (also MEDIUM / LOW). A new office NAT that is not in Security → Networks looks high-risk. Adding the CIDR is change-control. Source: Risk scoring; Add IPs to a network zone from the System Log.

lab.okta.com · Security → Authentication Policies → App sign-in → High-Risk-SignOn → Rules
Training mock · not live

Security / Authentication Policies / App sign-in / High-Risk-SignOn / Rules / Add rule

Add an app sign-in policy rule

Unmanaged-or-high-risk
High
Any (catch unmanaged)
Not managed
Not in ZONE-HQ
Denied
Any 1 factor type · phishing-resistant
Phishing-resistant · Hardware protection

Lab labels. Official IF/THEN names from Add an app sign-in policy rule. Catch-all rule on a new policy allows Any two factor types — do not confuse it with this deny rule.

Source: Okta Help — Add an app sign-in policy rule (Security → Authentication Policies → App sign-in → Rules → Add rule; Device state, Device management, User’s IP, Risk, THEN Access is). FastPass / phishing-resistant constraint. Training mock · not live.

Green success on each side

6. Five tickets as full stories

These five land every quarter. Memorise first tool + proof field. Times and identities below are lab-only. RFC 5737 addresses only.

Journey · one named deny is the ticket
Sign-in path with healthy cyan nodes and one cracked amber policy hop
Notice: Directory can still say ACTIVE while policy.evaluate_sign_on is DENY. That is a policy ticket, not an HR ticket.
TicketSymptomFirst toolProof field
OEVD-01WFH: “Okta is down, I can’t even see the widget”Reports → System LogRow exists? eventType + outcome.result + actor
OEVD-02Password accepted; push / MFA fails after a rule shipuser.authentication.auth_via_mfaoutcome.result + authenticator target
OEVD-03Personal laptop, FastPass, “device not trusted”Device object on FastPass eventsRegistered / Managed + health signals
OEVD-04ACTIVE, Finance tile missing, no SSOuser.authentication.sso then AssignmentsMissing SSO + group assignment
OEVD-05New office NAT: everyone challenged or deniedclient.ipAddress + Networks + riskIP vs ZONE-HQ + debugContext.debugData.risk

OEVD-01 — Prove they hit Okta (System Log)

01:42 · P2. Priya on a hotel network. Slack already says outage. L1 drafted a new app sign-in Allow and a password reset.

First tool: Reports → System Log. Filter actor priya@lab.example, last 30 minutes, the ticket time zone.

If empty: she never reached this org. Quote “no System Log row for actor + window.” Next check is the Okta URL, a bookmark to another preview / cell, split DNS, or a captive portal — not Access is Denied.

If a row exists: copy eventType, outcome.result, actor, client.ipAddress, debugContext. You are now allowed to open the MFA and policy events on that transaction.id. Existence of a row is not an Allow.

Trap

Do not trust a colleague’s System Log search from a different time zone. Official filters include Time Zone. Seven-day default will hide a ticket from last month and flood you with noise from yesterday.

OEVD-02 — Prove the factor (auth_via_mfa)

02:05 · P2. Password is accepted. Okta Verify push fails after last night’s phishing-resistant ship. Someone wants “SMS as a backup for Finance.”

First tool: eventType eq "user.authentication.auth_via_mfa" for that actor. Also pull user.session.start on the same transaction — official Help: wrong authenticator returns VERIFICATION_ERROR, and this event is not an access token.

Proof field: outcome.result on the MFA event (Allow / Deny / Challenge) plus the authenticator target (Okta Verify vs SMS vs FastPass). If the new rule requires phishing-resistant possession, enrolled SMS will fail even though Security → Authenticators shows two factors. Enrollment ≠ the policy accepted that factor.

Close

I would not add SMS to Finance. I would quote user.authentication.auth_via_mfa and the rule’s possession constraint. A user-level exception is change-control with the policy owner.

OEVD-03 — Prove the device (FastPass / Device Trust)

02:20 · P2. User swears MFA is set up. Screenshot of Okta Verify. Finance still DENY. Hypothesis: unmanaged device vs a rule that wants Device: Registered, Managed.

First tool: same transaction, expand Device on the FastPass events listed in Device health attributes in System Log events. Quote Disk Encryption Type, Jailbreak, Screen Lock Type, Secure Hardware Present, and whether the device is registered / managed.

Proof field: Device.managed = false (lab) on policy.evaluate_sign_on with THEN Access is Denied. Official FastPass flow: Okta issues a challenge → Okta Verify / FastPass collects device signals and signs with the proof-of-possession key → policies evaluate on that device context. A healthy Verify install on an unmanaged laptop is working as designed when the rule requires managed.

Trap

Password reset will not mark the device managed. Disabling High-Risk-SignOn is not a night-shift fix. Asking the owner to enroll a managed device, or a scoped exception with the policy owner, is the designed path.

OEVD-04 — Prove assignment (no SSO row)

02:40 · P3. New hire is ACTIVE. Finance-SaaS SAML metadata is valid. No tile. L1 wants the SAML app rebuilt.

First tool: eventType eq "user.authentication.sso" for that actor + app. Official common filter for Application Access / Sign-in Success. Also search application.user_membership.remove if they used to have the tile (Common System Log filters).

Proof field: no SSO row in the window + Assignments tab missing the joiner’s group. Official assign path: Applications and Resources → Applications → the app → Assignments → Assign to People / Assign to Groups. Valid metadata ≠ this user is assigned. Rebuilding SAML is the wrong change.

Close

Named DENY means they reached the broker and a rule refused them. No event ≈ never assigned or never launched. I would assign the group of record, not rebuild the SAML app.

OEVD-05 — Prove the zone / risk (client.ipAddress + debugContext)

03:05 · P2. Brand-new office NAT. Everyone there is challenged or denied. Someone typed “ThreatInsight is blocking the building.”

First tool: expand Client on any of their events. Official: hover the IP → Filter. Quote client.ipAddress = 203.0.113.40 (lab). Open debugContext.debugData.risk — official example reasons include Anomalous location and Anomalous device. Compare the IP to Security → Networks (Create an IP zone / Add IPs to a network zone from the System Log).

Then rule ThreatInsight out: eventType eq "security.threat.detected" and debugContext.debugData.threatSuspected eq "true". Official outcome.result values on that event: DENY, RATE_LIMIT, ALLOW. Those events often have no username. Path: Security → General → Okta ThreatInsight settings (No Action / Log authentication attempts from malicious IPs / Log and enforce). If ThreatInsight is Log-only and threatSuspected is false, it is not this DENY.

Close

I would quote the office IP and the HIGH / Anomalous location reason. Updating ZONE-HQ CIDRs is change-control. Turning the app sign-in policy off for the org is the trap.

7. Traps + close-the-ticket proof

Proof · named field, then Closed
Operations monitor with green checkmarks after evidence is attached
Notice: the close is a named System Log field on a timestamp, not a screenshot of the End-User Dashboard.
You seeWeak closeStrong close
Empty System Log for actor + UTC“Okta is down” / new AllowQuote no row; fix URL / DNS / time zone; re-search
Row exists, still failing“Okta is fine”You only proved the hit. Read MFA + policy.evaluate_sign_on
user.session.start SUCCESS“They have a token”Official: not an access token. Wait for SSO / app allow
Two factors enrolledReset passwordauth_via_mfa vs the possession constraint
Okta Verify screenshot“Device is trusted”Device object: Registered / Managed + health
ACTIVE + valid SAML metadataRebuild the appAssignments + user.authentication.sso
New office IPsDisable High-Risk-SignOnclient.ipAddress + Networks CIDR via change-control
ThreatInsight in the channelFlip to Log and enforcesecurity.threat.detected + threatSuspected first
debugContext risk HIGHTenant Sev-1Quote reasons= (device / location / ThreatInsight)
Proof checklist before you leave the bridge
Stamp (from the factory)Desk proofChange-control?
StatusActor exists; lifecycle events if you must. ACTIVE is not the close.HR / lifecycle — not 01:40
AssignmentMissing user.authentication.sso + Assignments tabAssign to Groups if you own the app
Policy / riskpolicy.evaluate_sign_on + debugContext.debugData.riskEdit the named rule with owner
Zoneclient.ipAddress vs Security → NetworksCIDR add is a change
Factor / FastPassauth_via_mfa + Device health objectDo not lower phishing-resistant at 02:00
Interview close

I name the question, then the first tool, then one official field. System Log proves the hit. user.authentication.auth_via_mfa proves the factor. FastPass Device health proves posture. policy.evaluate_sign_on proves the rule. I do not change an app sign-in policy, a zone, or ThreatInsight until that field is on the ticket. Factory model: ACTIVE is not allowed — five stamps.

Knowledge check

Six night-shift judgments. Each maps to a first tool or a proof field. Check answers, then Reset if you picked the wrong surface.

Q1

WFH user: “Is Okta even working?” You have not opened a policy editor. First proof?

Correct: b. Official System Log path. Empty log means they never hit this org — there is no rule to edit. Re-read Side A and OEVD-01.
Q2

Password is accepted. Push fails after a phishing-resistant ship. Which event + field closes OEVD-02?

Correct: a. Official MFA event; Help documents Allow / Deny / Challenge. user.session.start is not an access token. Re-read Side B and OEVD-02.
Q3

Okta Verify is enrolled. Finance DENY on a personal laptop. First proof?

Correct: c. Official Device health attributes on those four FastPass events. Enrollment is not managed. Re-read Side C and OEVD-03.
Q4

System Log has no row for this actor in the ticket window. What is that allowed to mean?

Correct: a. Empty log is data. Official filters include Time Zone; default is last seven days. Re-read Flow 2 bottom box and OEVD-01.
Q5

User is ACTIVE. Finance SAML metadata is Valid. No tile. First tool + close?

Correct: d. Official SSO filter and Assign to Groups path. Valid metadata ≠ this user is assigned. Re-read OEVD-04 and the factory pair.
Q6

New office NAT 203.0.113.40. Everyone challenged. debugContext.debugData.risk shows HIGH, reasons=Anomalous location. ThreatSuspected=false. Next?

Correct: b. Official risk DebugData and network-zone path. threatSuspected=false plus a named location reason is not a ThreatInsight DENY. Re-read OEVD-05 and Side C step 4.

Sources

Related: Okta session factory — ACTIVE is not allowed · Okta MFA & adaptive policies · Okta architecture & SSO · Okta practice dashboard